Toon posts:

array per eerste letter sorteren.

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb bezig een select lijst uit een txt bestand op te bouwen.

nu leest hij een text document uit met het volgende script.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        $your_file = "register.txt";

        //open the file
        $read_your_file = @fopen($your_file, "r") or die ("Couldn't Access $your_file");

        //create a variable to hold the contents of the file
        $contents_your_file = fread($read_your_file, filesize($your_file));
        
        //array of file contents
        $your_array = explode("\n",$contents_your_file);

        //close the file
        fclose($read_your_file);

        //counts the number elements in the property_categories array
        $num_elmnts_array = count($your_array) ;


Nu bouwt hij mijn lijst (straatnamen) netjes op in een select box. maar ik wil hem graag laten opbouwen per letter. dus alle straatnamen die beginnen met de letter a in een aparte array. letter b, letter c etc etc.

dus ik zoek een functie om de array '$your_array' te laten sorteren per letter wat ik wil. ik ben al een tijdje aan het zoeken naar oplossingen maar weet eigenlijk niet goed welke sorteer optie in php ik hier het beste voor kan gebruiken.

ik hoef geen kant en klare code van iemand. als ik maar op weg kan worden geholpen met welke soort functie dit het beste kan doen...

dank is alvast groot!

Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 21:35
Kijk eens naar usort(). Daarmee kan je een array laten sorteren aan de hand van een zelf geschreven functie :)

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 22-09 20:16

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zal dan wel een noop wezen maar kom er niet uit..

ik wil namelijk het volgende doen (verbeter me als het omslachtig is).

de txt file bestaat uit de volgende regels.. en na de A komt de B C D E etc.

A
Aagtendijk, Sint 2 - S5
Aagtenpoort 2 - T6
Aardbeiencroft 2 - M3
Abelenstraat=3 2 - P5
Acacialaan 2 - N5
Adigestraat 2 - T3

deze komen dus in een lange array te staan.

Nu wil ik de letters per alfabet in een array zetten. dus $array_A en $array_B etc.

ik kom er nog niet helemaal achter welk usort of filter moet toepassen dat hij de selectie op de eerste letter van de $value toe past. (want de key is gewoon een oplopend getal als ik het goed begrijp??)

in mysql zou ik het doen met $valua == a% maar dit lukt me nu niet... :(

iemand toch nog een suggestie?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kunt toch redelijk makkelijk het volgende doen
code:
1
2
3
4
5
6
array names;

while( ReadLine() )
{
    names[ Line.FirstChar ][] = Line;
}

Eventueel kun je de losse arrays dan nog apart sorteren dat ze ook in de array op alfabet staan ( Als ze dat niet al in je file staan ).
Verwijderd schreef op woensdag 11 februari 2009 @ 14:00:
Nu wil ik de letters per alfabet in een array zetten. dus $array_A en $array_B etc.
Ik zou het niet allemaal in losse variabelen zetten, maar gewoon een array van lijsten bijhouden.

Je kunt makkelijk via de key ( de eerste letter ) de lijst weer opzoeken.

[ Voor 38% gewijzigd door Woy op 11-02-2009 14:08 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je wil zo te lezen helemaal niet sorteren per letter. Je wil groeperen per letter en dus per letter een apart array bijhouden. Hoewel het me een beetje een raadsel is waarom is dat toch vrij simpel. Ik ga de code niet uitschrijven, maar het is niet meer dan elk element van het array doorlopen, de eerste letter bekijken en dan $array[$eerste_letter] = $waarde.

edit:
Wat Woy al zegt dus. :)

[ Voor 4% gewijzigd door NMe op 11-02-2009 14:10 ]

'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.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
NMe schreef op woensdag 11 februari 2009 @ 14:09:
$array[$eerste_letter] = $waarde.
Dan hou je per letter dus de laatste waarde uit de file over :P

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Dit kan ook:
PHP:
1
$array[$waarde[0]][] = $waarde;

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 19:56

MueR

Admin Tweakers Discord

is niet lief

Verwijderd schreef op woensdag 11 februari 2009 @ 14:00:
in mysql zou ik het doen met $valua == a% maar dit lukt me nu niet... :(

iemand toch nog een suggestie?
In ieder geval beginnen met het niet zo in MySQL te doen. Wildcards zijn echt ruk voor je performance.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
MueR schreef op woensdag 11 februari 2009 @ 14:57:
[...]

In ieder geval beginnen met het niet zo in MySQL te doen. Wildcards zijn echt ruk voor je performance.
Wildcards aan het einde van je string zijn niet zo erg aangezien de eventuele indexen dan nog steeds gebruikt kunnen worden. Als je ze aan het begin gebruikt kunnen de indexen inderdaad niet meer gebruikt worden. Het is zeker iets om voor uit te kijken, maar in sommige situaties kan je het best gebruiken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1