Volledige versie bekijken : check gelijke values in array



pietergoed
23 April 2011, 20:11
Hallo

Kan je met een functie (bij een array) kijken of er gelijke waarden zijn?
Ik wil dit in combinatie met een whilelus gebruiken
Ik wil het zelfde effect bekomen als bij het volgende

while ($i != $j)
{
...
}

maar ik wil het met een array doen, waar meer dan 2 waarden inzitten (6 waarden in totaal)
while ($arr[0] != $arr[1] != $arr[2] != $arr[3] != $arr[4] != $arr[5] != $arr[6])
{
...
}

> dit wil ik dus bekomen

Pieter

ultddave
23 April 2011, 22:06
Een mogelijkheid:

$filtered = array_unique($inputArray);
$difference = array_diff($inputArray, $filtered);
// Difference bevat nu alle dubbele waarden.
$result = array_unique($difference);

count($result) = aantal dubbele waarden
$result => bevat al deze waarden (éénmalig)
Dus stel deze array:
4, 5, 8, 5, 6, 7, 8

Dan bevat $result: 5, 8
En count($result) is 2.

Ik weet niet of dat je verder helpt. ;)

Interessante array functies; http://www.php.net/manual/en/ref.array.php

(De functies: array_unique, array_diff en count zijn door PHP al voorzien en moet je dus niet zelf implementeren.)

Mvg,
Dave

pietergoed
24 April 2011, 11:20
Hallo

Ik heb het probleem gedeeltelijk opgelost.
ik heb de pc dus 7 willekeurige kruisjes laten aanduiden.
Het moeten echter 7 verschillende zijn.
ik heb deze code gebruikt:

$input = $arr;
$result = array_unique($input);
echo '<br/>';
echo count($result);

als deze laatste regel zegt dat het er 7 zijn is het OK, maar als het er 6 of minder zijn zou de pc nogmaals 7 willekeurige kruisjes moeten aanduiden.(eigenlijk is het iets ingewikkelder dan 7 willekeurige kruisjes maar dat speelt hier geen rol)
Mijn vraag is nu: hoe kan ik de pc 'terugsturen' naar een bepaald punt in mijn php als het NIET 7 is.
zoiets dus:
if (count($result) != 7)
{GA TERUG NAAR EEN BEPAALD PUNT}
else{mijn ander code die de pc dan moet uitvoeren}

Pieter

ultddave
24 April 2011, 12:04
Deze manier is het meest effectief in dit geval:

(Een lus die blijft lopen zolang hij er geen 7 verschillende kiest. In principe niet 100% veilig, aangezien de PC in principe redelijk lang dezelfde vakjes kan kiezen.)



do
{
// kies 7 willekeurige vakjes
}
while(count($result) != 7);

// De code achter deze while lus wordt enkel uitgevoerd als er 7 verschillende vakjes zijn.


http://php.net/manual/en/control-structures.do.while.php

Mvg,
Dave

pietergoed
24 April 2011, 12:13
Het is gelukt dankjewel!!!