Voorbeeld topic

  • Dit is een voorbeeld topic, die als voorbeeld moet gaan dienen hoe je iemand helpt in een topic met een vraag. Jullie proberen mij zo goed mogelijk te helpen (Zoals altijd), en ik zal ondertussen sturen om zodoende tot een goed voorbeeld topic te komen.


    Aan het eind zal ik het topic sluiten en opschonen (Aanwijzingen van mijzelf e.d.).


    Ps. Dit betekent niet dat je je beeldig moet gedragen! Discussies over de vraag zijn welkom, graag zelfs!


    Beste CP'ers,


    Ik ben tegen een probleem aangelopen. Ik heb namelijk een array met daarin allemaal postcodes, enkel staan deze door elkaar heen, op allerlei verschillende manieren.


    De array ziet er als volgt uit:


    PHP
    Array (
     Array(3432,'DD'),
     Array('RZ',4436),
     Array(1453,'AI'),
     Array(1453,'JZ'),
     Array(4543,'VP'),
     Array('AD',7012),
     Array(3222,'MN'),
     Array('QP',9421)
    )


    Nu wil ik dat de array er als volgt uit komt te zien:
    - Altijd de getallen in de eerste key, en de letters in de tweede key.
    - Orderen op cijfers, daarna op letters.


    Alvast bedankt voor de hulp!

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Moet ik het je nou voorgekauwd in je mond geven of jou het laten oplossen?


    Stap voor stap+Uitkomst van de stap:
    1. Alle letters die in de eerste key van de array staan omwisselen met de de 2e key in die array
    2. Alle cijfers op volgorde zetten
    3. Alle letters op alfabetische volgorde zetten



    Uitkomsten:
    Stap 1:

    PHP
    Array (
     Array(3432,'DD'),
     Array(4436,'RZ'),
     Array(1453,'AI'),
     Array(1453,'JZ'),
     Array(4543,'VP'),
     Array(7012,'AD'),
     Array(3222,'MN'),
     Array(9421,'QP')
    )


    Stap 2:

    PHP
    Array (
     Array(1453,'AI'),
     Array(1453,'JZ'),
     Array(3222,'MN'),
     Array(3432,'DD'),
     Array(4436,'RZ'),
     Array(4543,'VP'),
     Array(7012,'AD'),
     Array(9421,'QP')
    )


    Stap 3(Eindresultaat):

    PHP
    Array (
     Array(1453,'AD'),
     Array(1453,'AI'),
     Array(3222,'DD'),
     Array(3432,'JZ'),
     Array(4436,'MN'),
     Array(4543,'QP'),
     Array(7012,'RZ'),
     Array(9421,'VP')
    )
  • Dat is inderdaad hoe de array eruit moet komen te zien, maar ik heb uiteraard veel meer postcodes: Dit zou ik met een code willen doen, want op deze manier duurt het dagen.;)


    [offtopic]Het is inderdaad niet de bedoeling dat je het helemaal voorkauwt, aanwijzingen geven is genoeg, en zelf beter![/offtopic]

  • Ik denk dat Killingdevil het met PHP wil oplossen? Zodat als hij meerdere postcodes in zijn array heeft hij deze kan ordenen.


    Je kan dit oplossen met 4 regels nette code.


    Je doet eerst een foreach door de array en gebruik je de functie sort() op elke kleine array. Daarna doe je sort() op de gehele array, klaar ;).


    Edit: Killingdevil was me voor xD

  • TerrorSheep, hartstikke bedankt, dit werkt al aardig. Heb nu het volgende stukje code geschreven:



    Ik moest alleen even rsort() gebruiken in plaats van sort().


    Maar nu heb ik wel eens vaker van dit soort geintjes, en werkt dat niet altijd met enkel sort. Dan moet ik dus usort() gebruiken, maar dat snap ik niet helemaal. Wie kan mij uitleggen hoe usort() werkt?

  • sort() sorteert de array in de volgerde die php heeft ingesteld
    rsort() is net hetzelfde alleen sorteert hij in de andere richting (rsort() => reverse sort)


    bij usort() kun je bij de 2e waarde een functie opgegeven waarin je 2 waarden kan invullen. Met die functie kan je zelf de volgorde bepalen. Zelf heb ik geen ervaring met deze dus misschien kan iemand anders deze goed uitleggen?


    Voor de rest: php.net

  • usort is een functie die een callback twee waardes laat vergelijken die aangeeft welke hoger is of dat ze gelijk zijn.
    Die callback moet 0 returnen als de waardes gelijk zijn.
    De callback moet -1 (of lager) returnen als de eerste waarde lager is.
    De callback moet 1 (of hoger) returnen als de eerste waarde groter is.


    Als je dan die callback functie maakt voor deze postcode dan kan je de volgende krijgen:


    Eigenlijk is het niet zo heel moeilijk, je moet het alleen begrijpen.
    Dus bestudeer de code!


    PS. alleen usort($array, 'zip_compare');.
    PPS. die foreach is niet meer nodig.
    PPPS. ja, ik heb dit net zelf gescript.
    PPPPS. een zip code is Amerikaans voor postcode.

  • Darsstar, hartstikke bedankt! Je hebt goed uitgelegd hoe usort werkt met een callback functie.


    Ik denk dat dit een geschikt topic is als voorbeeld topic, ik ga er dus een highlight van maken.


    Helaas wist ik zelf alles al.:p Behalve dan dat we op CP ook een fatsoenlijk topic kunnen voeren! Iedereen die mee heeft gedacht en gepost hartstikke bedankt.


    Ik hoop dat hier werkelijk een voorbeeld aan wordt genomen: Zowel door de mensen die een probleem proberen op te lossen als de mensen die hier een probleem voorstellen. Vooral de laatste groep kan wel een voorbeeld gebruiken!

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!