array_diff не работает должным образом? Что может быть причиной?
У меня есть два массива.
Проверьте код
$array1 = array(0=>'215',1=> '225');
$array2 = array(0=>'225');
$diff_result = array_diff($array1, $array2);
$diff = array_values($diff_result);
print_r($array1);echo "<br>";
print_r($array2);echo "<br>";
print_r($diff_result);echo "<br>";
print_r($diff);
Теперь я получаю ответы как
Array ( [0] => 215 [1] => 225 )
Array ( [0] => 225 )
Array ( [0] => 215 [1] => 225 )
Array ( [0] => 215 [1] => 225 )
Но согласно руководству array_diff это должно быть
Array ( [0] => 215 [1] => 225 )
Array ( [0] => 225 )
Array ( [0] => 215 )
Array ( [0] => 215 )
В чем может быть проблема
2 ответа
Решение
Это не работает для меня (не знаю почему), поэтому я изменил код для расчета разницы в двух массивах
for ($i = 0; $i < count($array2); $i++) {
for ($j = 0; $j < count($array1); $j++) {
if(!in_array($array1[$j],$array2)){
$resArr[] = $array1[$j];
}
}
}
print_r($array1);echo "<br>";
print_r($array2);echo "<br>";
print_r($resArr);echo "<br>";
Спасибо за время
Я запустил ваш код как есть и получил правильные результаты.
$array1 = array(0=>'215',1=> '225');
$array2 = array(0=>'225');
$result = array_diff($array1, $array2);
$diff_result = array_diff($array1, $array2);
$diff = array_values($diff_result);
print_r($array1);echo "<br>";
print_r($array2);echo "<br>";
print_r($diff_result);echo "<br>";
print_r($diff);
Выход:
Array ( [0] => 215 [1] => 225 )
Array ( [0] => 225 )
Array ( [0] => 215 )
Array ( [0] => 215 )
мой php -v
PHP 5.3.5-1ubuntu7.2 with Suhosin-Patch (cli) (built: May 2 2011 23:18:30)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
какую версию php вы используете,