Kijk welk cijfer het meeste voorkomt.
waar moet ik dat dan zoeken
stap 1
dat was/is de waarden in array zetten
stap 2
dat was/is het tellen van het aantal
stap 3
dat was/is het bepalen van de hoogste value
stap 4
dat was/is het opzoeken van de key-index die hoort bij de uitkomst van stap 3
dus:
stap 2:
a = array_count(x)
stap 3:
b = max(a)
stap 4:
c = array_search(b,a)
dus als je dat nest krijg je:
array_search(max(array_count(a)),array_count(a))
is het array_count of array_count_values?
stap 2:
a = array_count_values(x)
stap 3:
b = max(a)
stap 4:
c = array_search(b,a)
dus als je dat nest krijg je:
array_search(max(array_count_values(a)),array_count_values(a))
dan moet ik iets aanpassen in stap3
Gewijzigd op 13/11/2010 18:08:36 door Jasper DS
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$string = '1345123';
$array = count_chars( (int) $string);
foreach($array as $num => $quant)
echo $num . ' komt ' . $quant . ' keer voor';
$string = '1345123';
$array = count_chars( (int) $string);
foreach($array as $num => $quant)
echo $num . ' komt ' . $quant . ' keer voor';
array_search(max(array_count_values(a)),array_count_values(a))
maar dan zal je uit het resultaat van a = array_count_values(x) de uitkomst van stap 4 moeten verwijderen.
http://www.php.net/unset
anderplan van aanpak
http://www.php.net/foreach met de uitkomst van stap 2 met zowel key als value benoemd
Toevoeging op 13/11/2010 18:15:52:
Pim, dat sluit niet aan op het geen er gewenst wordt
je krijg een x aantal posts binnen en die kan je niet zomaar aan elkaar plakken om dan te bepalen hoevaak een waarde van z'n post voorkomt
Ik ga Noppes even plagen, door geen één functie van hem te gebruiken :)
Los uit het handje geschreven:
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
27
28
29
30
31
32
33
34
35
36
37
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
27
28
29
30
31
32
33
34
35
36
37
<?php
$cijfers = array(1, 2, 3, 4, 4, 5, 2, 3, 4, 1, 6);
$count = count($cijfers);
$i = 0;
while($i < $count) {
$tempval = $cijfers[$i];
if(isset($val[$tempval])) {
$val[$tempval]++;
} else {
$val[$tempval] = 1;
}
$i++;
}
foreach($val as $value => $value2) {
if(!isset($biggest)) {
$biggest['val'] = $value;
$biggest['val2'] = $value2;
} else {
if($value2 > $biggest['val2']) {
$biggest['val'] = $value;
$biggest['val2'] = $value2;
}
}
}
// geeft "4 komt het vaakst voor!"
echo $biggest['val'] . ' komt het vaakst voor (met ' . $biggest['val2'] . ' keer hetzelfde getal)!';
?>
$cijfers = array(1, 2, 3, 4, 4, 5, 2, 3, 4, 1, 6);
$count = count($cijfers);
$i = 0;
while($i < $count) {
$tempval = $cijfers[$i];
if(isset($val[$tempval])) {
$val[$tempval]++;
} else {
$val[$tempval] = 1;
}
$i++;
}
foreach($val as $value => $value2) {
if(!isset($biggest)) {
$biggest['val'] = $value;
$biggest['val2'] = $value2;
} else {
if($value2 > $biggest['val2']) {
$biggest['val'] = $value;
$biggest['val2'] = $value2;
}
}
}
// geeft "4 komt het vaakst voor!"
echo $biggest['val'] . ' komt het vaakst voor (met ' . $biggest['val2'] . ' keer hetzelfde getal)!';
?>
Opmerking:
Als er een gedeelde eerste plaats is (bijvoorbeeld "$cijfers = array(4, 4, 5, 5, 1)"), is het: wie het eerst komt, wie het eerst maalt!
Gewijzigd op 14/11/2010 21:21:34 door Gerben pHp
Die while kan al weg, want dat kan je al met array_count_values
De foreach is wat voor te zeggen, maar hetgeen erbinnen staat is ook onzinnig, want het resultaat van array_count_values is al alsdanig gesorteerd dat je weet dat je bij de eerste loop weet welke key waarde hoevaak voorkomt - de value -
Wat jij doet is dus het wiel opnieuw uitvinden!
Gewijzigd op 14/11/2010 21:30:08 door Noppes Homeland
Weetje, ik hou zelf niet van al die array functies, dus ik schrijf nog liever een code eromheen dan dat ik ze gebruik :o
En hé, het werkt wel :D