/ / Pokúšam sa porovnať čísla v 2 poliach PHP - php, polia

Snažím sa porovnať čísla v 2 poliach PHP - php, poliach

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ď č. 1

Použ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";