op alfabeth zoeken in een array
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$artiest = ucwords(strtolower($artiest));
$artiesten = preg_split('#(\ (vs|feat|featuring|versus)\.?\ )#ix',$artiest);
sort($artiesten);
$artiesten = array_unique($artiesten);
$artiest_count = count($artiesten);
$i=0;
foreach($artiesten AS $artiest) {
//Geeft bij elke nieuw artiest een enter.
If($i <= $artiest_count-2) {
$show_artiesten .="".$artiest."<br>";
} Else {
$show_artiesten .="".$artiest."";
}
$i++;
}
unset($i,$artiest_count);
echo "$show_artiesten";
?>
$artiest = ucwords(strtolower($artiest));
$artiesten = preg_split('#(\ (vs|feat|featuring|versus)\.?\ )#ix',$artiest);
sort($artiesten);
$artiesten = array_unique($artiesten);
$artiest_count = count($artiesten);
$i=0;
foreach($artiesten AS $artiest) {
//Geeft bij elke nieuw artiest een enter.
If($i <= $artiest_count-2) {
$show_artiesten .="".$artiest."<br>";
} Else {
$show_artiesten .="".$artiest."";
}
$i++;
}
unset($i,$artiest_count);
echo "$show_artiesten";
?>
En ik wil er dus voor zorgen dat ik dan alleen alle arrays of strings krijg te zien de beginnen met een A, B, C enzovoorts ;) is hier een oplossing voor?
Wat je nu bedoelt is mij niet duidelijk
trouwens bij je preg_split niet vergeten nog andere dingen toe te voegen. ft wordt ook nog vaak gebruikt als koopelwoord van artiesten.
door $show_artiesten
Dus bijvoorbeeld
Dj Duro
The Prophet
Alfatwins
Brennan heart
maar ik wil er dus voor zorgen dat ik alleen de artiesten met een A, B, C enz te zien krijg ;)
Gewoon met een indexering dus ;)
Hoe zou de code moeten worden dan??
Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door chieljan sportel
pseudo code
Code (php)
1
2
3
4
5
2
3
4
5
for(i = 0; i < 26 - 1; i++)
array a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p
for(j = 0; j < artiesten.length; j++)
if(substr(artiesten(j),0,1) == 'array.i')
echo artiesten.j
array a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p
for(j = 0; j < artiesten.length; j++)
if(substr(artiesten(j),0,1) == 'array.i')
echo artiesten.j
In die richting moet je het maar een beetje zoeken, en de functie namen zijn niet helemaal php, maar dat red je zelf denk ik wel
Dat had je alle artiesten op alfabetische volgorde gegeven en je had zo een nette lijst met indexen kunnen maken.
Maar helaas heb je besloten om alles in PHP te gaan doen, dus zul je het op de volgende manier moeten aanpakken:
- Verschillende artiesten dmv preg_split() in een array zetten. (Doe je al)
- Waarden in de array sorteren met een van de sort functies.
- Array doorlopen en bijhouden wat de eerste letter van de artiest is.
- Afhankelijk van de eerste letter een nieuwe index tonen. (Als deze verschilt van de eerste letter van de vorige artiest)
Maar goed, er zullen waarschijnlijk wel een aantal haken en ogen aan dit systeem zitten. Om maar te beginnen met het voorbeeld dat Hipska al noemt: de reguliere expressie in jouw preg_split is bij lange na niet generiek genoeg. Er zijn nog veel meer mogelijke manieren waarop verschillende artiesten in 1 regel voorkomen.
nico schreef op 11.01.2009 22:20:
Je kan je array gaan doorlopen en dan voor ieder letter appart,.
pseudo code
In die richting moet je het maar een beetje zoeken, en de functie namen zijn niet helemaal php, maar dat red je zelf denk ik wel
pseudo code
Code (php)
1
2
3
4
5
2
3
4
5
for(i = 0; i < 26 - 1; i++)
array a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p
for(j = 0; j < artiesten.length; j++)
if(substr(artiesten(j),0,1) == 'array.i')
echo artiesten.j
array a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p
for(j = 0; j < artiesten.length; j++)
if(substr(artiesten(j),0,1) == 'array.i')
echo artiesten.j
In die richting moet je het maar een beetje zoeken, en de functie namen zijn niet helemaal php, maar dat red je zelf denk ik wel
Ik snap je niet helemaal waar zou dit in de code moeten komen?? en hoe moet ik nu een letter selecteren??
Als je echt van plan bent om het in PHP op te lossen: zie het stappenplan uit mijn vorige post...
ja maar hoe doe ik dat?? hoe kan ik bepalen wat de eerste letter van de artiest is en hoe haal ik daar weer een nieuwe index uit? en ik snap niet wat je bedoelt met sort want hij sorteert alles al op alfabetische volgorde ;)
chieljan schreef op 12.01.2009 14:08:
Dit noem ik niet bepaald alfabetisch:en ik snap niet wat je bedoelt met sort want hij sorteert alles al op alfabetische volgorde ;)
Quote:
Dj Duro
The Prophet
Alfatwins
Brennan heart
The Prophet
Alfatwins
Brennan heart
Je zult de waarden in de array $artiesten dus eerst nog moeten sorteren met behulp van sort.
Als je dat gedaan hebt is het een kwestie van uitlezen van die array en zoals ik zei bijhouden bij welke index je bent:
Maar hoe krijg ik nu alleen de arrays/strings te zien die beginnen met een A??
Maar dit is wel echt de basis van PHP. Als je dit nog niet beheerst, zou ik je aanraden om deze PHP beginnershandleiding door te nemen en eerst te zorgen dat je dat onder de knie krijgt.
Zonder die basis zal het vrij lastig worden om dit soort scriptjes te maken...
Maar het werkt dus manny thanx ;)
Ik heb echt zeer veel aan deze site :D
Waarom doe ik nog moeite?
ik gaf op 11.01.2009 21:15 al een manier om de eerste letter te bepalen..
Als je niet wil dat ik help zeg je het maar, dan verspil ik ook niet mijn tijd..
en @Blanche: Die strtolower hoeft niet, want de eerste regel in zijn script zorgt ervoor deat de eerste letter van een artiest altijd een hoofdletter is.
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
Hipska schreef op 12.01.2009 14:58:
Ik zie het. Overbodig dus :-)en @Blanche: Die strtolower hoeft niet, want de eerste regel in zijn script zorgt ervoor deat de eerste letter van een artiest altijd een hoofdletter is.
Echt fijn als mensen je willen helpen ;)