Toon posts:

[PHP] asort 2D array

Pagina: 1
Acties:

Onderwerpen


  • i-Deen
  • Registratie: oktober 2001
  • Laatst online: 07-09-2012
Volgens de functie omschrijving van asort() sorteert deze multi-array's eerst bij array length en dan by values. Maar ik wil alleen bij values sorteren...

voorbeeld asort($array):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Array
(
    [fa4356af136d59d6cd40ee2a86720d28] => Array
        (
            [5854027a2421ad34a4a94ff8dd45c7fa] => 21:00
        )

    [15ab41c939f556fa0615c0c63b0fa4a4] => Array
        (
            [5854027a2421ad34a4a94ff8dd45c7fa] => 10:00
            [2233d360945dfc32107a55028f1f77c8] => 12:00
        )

)


...maar ik verwacht juist zoiets:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
Array
(
    [15ab41c939f556fa0615c0c63b0fa4a4] => Array
        (
            [5854027a2421ad34a4a94ff8dd45c7fa] => 10:00
            [2233d360945dfc32107a55028f1f77c8] => 12:00
        )
    [fa4356af136d59d6cd40ee2a86720d28] => Array
        (
            [5854027a2421ad34a4a94ff8dd45c7fa] => 21:00
        )
)


Ik zie iets over het hoofd, maar wat?

  • Creepy
  • Registratie: juni 2001
  • Laatst online: 20:21

Creepy

Moderator Devschuur®

Tactical Espionage Splatterer

Kijk aub op http://php.net/manual/en/function.asort.php.
Hij sorteert eerst op lengte van de array, en daarna op value! Dus eerste de array met 1 item, en daarna de array met 2 items. De array van 2 items is gesorteerd op tijd. Dus het eerste voorbeeld dat je geeft klopt helemaal.

[Voor 45% gewijzigd door Creepy op 12-10-2010 17:48]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have star problems" --Kevlin Henney


  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

Wat jij zoekt is usort.

edit:
Wel een belangrijke vraag: hoe moet dit gesorteerd worden dan?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array
(
    [fa4356af136d59d6cd40ee2a86720d28] => Array
        (
            [5854027a2421ad34a4a94ff8dd45c7fa] => 21:00
            [2233d360945dfc32107a55028f1f77c8] => 11:00
        )

    [15ab41c939f556fa0615c0c63b0fa4a4] => Array
        (
            [5854027a2421ad34a4a94ff8dd45c7fa] => 10:00
            [2233d360945dfc32107a55028f1f77c8] => 12:00
        )

)

[Voor 91% gewijzigd door NMe op 12-10-2010 17:57]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • i-Deen
  • Registratie: oktober 2001
  • Laatst online: 07-09-2012
Het array met de tijden moet ASC gesorteerd worden. De array keys mogen niet veranderen. Ik heb al met een paar foreach loops iets geprobeerd, maar dan krijg ik de volgorde van de tijden niet goed.

Wie weet een andere functie of oplossing?

  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

Ik zeg toch: usort? Zonder user defined sortfunctie ga je zoiets specifieks niet voorgekauwd vinden.

Op persoonlijke titel vind ik het overigens storend hoe sommige mensen het stereotype van PHP-programmeurs bevestigen door maar aan te nemen dat er voor elke specifieke eis een standaardfunctie in het framework zit. Programmeren is meer dan alleen het aan elkaar schakelen van functies.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • i-Deen
  • Registratie: oktober 2001
  • Laatst online: 07-09-2012
@NME: ik deel je mening, maar als ik er zelf echt niet uit kom (zoals nu kom ik niet verder), dan post ik hier een vraag. Je moet toegeven dat asort() in mijn geval prima zou werken als deze geen ordening first by array length zou hebben.

uasort() zal ik moeten gebruiken, maar ik begrijp niet hoe die user defined functie in mijn situatie eruit zou moeten zien. Dus ik ga het array anders opstellen...

Bedankt voor de reacties! :)

  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

i-Deen schreef op woensdag 13 oktober 2010 @ 09:24:
@NME: ik deel je mening, maar als ik er zelf echt niet uit kom (zoals nu kom ik niet verder), dan post ik hier een vraag. Je moet toegeven dat asort() in mijn geval prima zou werken als deze geen ordening first by array length zou hebben.
Maar dat is dus altijd het probleem. Heel veel dingen zouden bijna met een standaardfunctie kunnen maar toch net niet omdat ze net geen rekening houden met een bepaald specifiek geval.
uasort() zal ik moeten gebruiken, maar ik begrijp niet hoe die user defined functie in mijn situatie eruit zou moeten zien. Dus ik ga het array anders opstellen...
Als ik je reactie op mijn eerste vraag goed begrijp kun je dat inderdaad maar beter doen. Een element uit array 1 invoegen tussen twee elementen van array 2 (PHP kent niet echt multidimensionale arrays, het zijn arrays van arrays) werkt niet zo lekker, ook niet met u(a)sort volgens mij. Als je er een platte array van kan maken (array_merge) dan zou ik dat doen, dan kun je namelijk wel een sortfunctie uit het framework gebruiken. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee