Pokúšam sa vytvoriť jedno pole s číslami zadanými používateľmi a potom ďalšie pole s náhodnými číslami od 0 do 9. Potom chcem porovnať dve polia a keď sa zhodujú, zopakovať výsledok.
Momentálne dostávam závažnú chybu:
Maximum execution time of 30 seconds exceeded
Viem, že prvky sú po použití správne zadané do poľa var_dump
.
$i = 0;
while(!in_array($lotArray, $userArray)) {
$i ++;
}
echo "YOU WON it took".$i."times";
?>
odpovede:
2 pre odpoveď č. 1Použitie iteračného prístupu na porovnanie každého čísla je Oh(n²)
pretože musíte porovnávať X krát X čísel.
Namiesto toho použite jednoduchý prístup:
- Zoraďte obe polia rovnakým spôsobom. (
Oh(n log n)
každý) - vytvorte z nich reťazec (
Oh(n)
) - porovnaj struny. (
Oh(n)
)
Páči sa mi to
$arr1 = array(1,2,3);
$arr2 = array(2,3,1);
asort($arr1);
asort($arr2);
$string1 = implode($arr1, "_"); // "1_2_3"
$string2 = implode($arr2, "_"); // "1_2_3"
if ($string1 == $string2){
echo "You"ve won!";
}
1 pre odpoveď č. 2
to funguje dobre
$count = //your wish of getting random numbers.
$randarr = range("0","9");
$randarr = array_rand($randarr,$count);
$difference= array_diff($randarr,$arr); //let $arr be your array
if(count($difference)==0)
{
//your display code
}
toto vám umožní vytvoriť toľko náhodných čísel, koľko si užívateľ vyberie.
1 pre odpoveď č. 3
Ak chcete porovnať dve polia (všetky čísla musia byť rovnaké, v rovnakom poradí):
$a1 = array(1, 9, 4);
$a2 = array(1, 9, 4);
if (count(array_diff($a1,$a2)) == 0)
echo "Both array match";