2014-10-12 3 views
1

Я пытаюсь написать программу, которая сравнивает значения в двух массивах. Пользователь вводит 6 номеров, которые хранятся в массиве. Затем я произвольно создаю 6 чисел и сохраняю их в другом массиве. Затем я сортирую массивы и преобразую их в строки, а затем сравниваю строки, чтобы увидеть, одинаковы ли значения в обоих массивах. Если они не совпадают, в моем цикле while я пытаюсь случайным образом создать 6 чисел и сохранить их во втором массиве до тех пор, пока не будут сопоставлены массивы. Однако в тот момент, когда я пытаюсь повторить количество раз, это потребовало просто «0» раз.Попытка сравнить значения в массиве PHP

Вот код, который я использую.

<?php 

    $number1 = $_POST['number1']; 
    $number2 = $_POST['number2']; 
    $number3 = $_POST['number3']; 
    $number4 = $_POST['number4']; 
    $number5 = $_POST['number5']; 
    $number6 = $_POST['number6']; 


$userArray = array($number1, $number2, $number3, $number4, $number5, $number6); 


// mix and max numbers that can be used with th lottery 
$min = 0; 
$max = 9; 
// random number between 0 and 1 simulating lottery 

    $lotNumber1 = rand ($min, $max); 
    $lotNumber2 = rand ($min, $max); 
    $lotNumber3 = rand ($min, $max); 
    $lotNumber4 = rand ($min, $max); 
    $lotNumber5 = rand ($min, $max); 
    $lotNumber6 = rand ($min, $max); 

$lotArray = array($lotNumber1, $lotNumber2, $lotNumber3, $lotNumber4, $lotNumber5, $lotNumber6); 

asort($userArray); 
asort($lotArray); 

$userString = implode($lotArray, "_"); 
$lotString = implode($lotArray, "_"); 


$i = 0; 

while($lotString != $userString) { 
    $i ++; 

    $lotNumber1 = rand ($min, $max); 
    $lotNumber2 = rand ($min, $max); 
    $lotNumber3 = rand ($min, $max); 
    $lotNumber4 = rand ($min, $max); 
    $lotNumber5 = rand ($min, $max); 
    $lotNumber6 = rand ($min, $max); 

    $lotArray = array($lotNumber1, $lotNumber2,    $lotNumber3, $lotNumber4, $lotNumber5, $lotNumber6); 
    asort($lotArray); 

    $lotString = implode($lotArray, "_"); 

} 

echo "YOU WON it took".$i."times"; 


?> 
+0

бы не 'array_diff()' быть более простой подход? – arkascha

ответ

2

Причины, по которым он всегда принимает нулевые попытки, - это то, что у вас есть ошибка, когда вы изначально вычисляете две строки для сравнения!

Изменить эти две линии

$userString = implode($lotArray, "_"); 
$lotString = implode($lotArray, "_"); 

к

$userString = implode($userArray, "_"); 
$lotString = implode($lotArray, "_"); 

Такие вещи случаются, не волнуйтесь :-)

+0

Ах, это так глупо! Спасибо. – pocockn

Смежные вопросы