Volledige versie bekijken : [oplossing: array_count_values] PHP: duplicate entries in een array tellen
+oMÁz_
%Europe/Berlin %543 %2007, 13:02
Hi Folks_
ik geraak er even niet uit..
Een array met duplicate entries opschonen, of de dubbels in een nieuwe array onderbrengen; allemaal goed en wel, maar hoe kan ik de array houden zoals 'ie is, en van ieder item het aantal aanwezigheden tellen? Bochtenwerk met while/for/count-stuff brengt wel uitsluitsel, maar bestaat er geen functie die dit voor elkaar krijgt; eventueel in combinatie met een array_unique of iets dergelijks?
say:
$deBewusteArray=array("banaan", "konijn", "glascontainer", "banaan", "konijn", "konijn");
een_of_andere_functie($deBewusteArray);
//output:
de array bevat
2 bananen,
3 konijnen en
1 glascontainer
de array functielijst maakt geen melding van een dergelijke functie, maar het is ook best mogelijk dat ik het te ver zoek.
Iemand een hint?
[/cheerio]
WernerL
%Europe/Berlin %554 %2007, 13:18
Volgens mij bestaat er geen functie die dit voor jouw doet. Maar wat je kunt doen is een 2d array aanmaken en dan vervolgens $debewustearray doorlopen met een foreach.
En mij elke node controleren of hij bestaat in je 2darray. Zonee, toevoegen. zoja, in de 2d array met 1 optellen. Dan krijg je zo'n soort array
Konijn => 3
bananen => 2
glascontainer => 1
En dan kun je deze array gebruiken voor je uiteindelijke output. Hoop dat je het snapt. :P
Bargok
%Europe/Berlin %578 %2007, 13:52
Met dank aan de post beneden ;)
$duplicates = array();
$duplicates[] = 'test';
$duplicates[] = 'test';
$duplicates[] = 'test2';
$duplicates[] = 'test2';
// Remove Duplicates
$unique = array_unique($duplicates);
$count = array_count_values($duplicates);
Jan
%Europe/Berlin %581 %2007, 13:56
http://be2.php.net/manual/nl/function.array-count-values.php
array_count_values() geeft een array terug waarin de waarden van de input array dienen als keys en hun frequentie in input als waarden.
$array = array (1, "hello", 1, "world", "hello");
print_r(array_count_values ($array));
De output van bovenstaand programma ziet er zo uit:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
http://be2.php.net/manual/nl/function.array-unique.php
array_unique() neemt array als input en geeft een nieuwe array terug zonder dubbele waarden.
$input = array ("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique ($input);
print_r($result);
De output van bovenstaand programma ziet er zo uit:
Array
(
[b] => green
[1] => blue
[2] => red
)
Jan
+oMÁz_
%Europe/Berlin %601 %2007, 14:26
oi maestro's,
alvast bedankt voor de reacties.
@WernerL: you got me there; ik snap het inderdaad niet helemaal goed. In eerste instantie dacht ik het indexnummer te verhogen, zodat ik een valuepair kreeg waar ik alle info in vond. Maar da's nonsense natuurlijk.
Hoe kan ik in z'n 2D-array meerdere waarden koppelen? Of betreft het dan een array met arrays als items? Dat moet inderdaad lukken. Goeie voorzet_
@Bargok: niet meteen een antwoord op de vraag, maar wel nog steeds de engste avatar! Dat verdient een eervolle vermelding.
@jan: array ("a" => "green".. herken ik van een voormiddagje php.net afschuimen.
Maar damn: array_count_values had ik over het hoofd gezien. Die is het helemaal! (In het overzicht kreeg die de uitleg: "Telt alle waarden in een array", dus had ik die genegeerd.)
[/muchos gracias]
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.