2016-05-25 5 views
-1

У меня есть два массива. $arrayOld и $arrayNew, и я хочу сравнить эти массивы и выбирать только те значения, которые не указаны в $arrayNew.PHP сравнения массивов

Я не хочу, чтобы значения были только в $arrayNew. Поэтому я не думаю, что array_diff() поможет мне.

$arrayOld = [1, 2, 3, 4, 5] 
$arrayNew = [1, 4, 5, 6, 7] 

Так что нужно только вернуть 2 и 3, а не 6 или 7.

+1

[array_diff] (http://php.net/array_diff)? –

+1

Использовать 'array_diff ($ arrayOld, $ arrayNew)' –

+0

array_diff() даст мне 6 и 7 тоже правильно? –

ответ

2

использовать array_diff, для этого. Поскольку вам нужно различать массив и данные из старого массива, вам нужно использовать старый массив в качестве первого параметра array_diff.

Примечание: Массив дифф только возвращается из первого массива, который не во втором массиве.

$arrayOld = [1, 2, 3, 4, 5]; 
$arrayNew = [1, 4, 5, 6, 7]; 

$n = array_diff($arrayOld, $arrayNew); 

print_r($n); 

Результат:Online Check

Array 
(
    [1] => 2 
    [2] => 3 
) 

Если вам нужны новые ключи для вывода массива просто использовать array_values. Новый стартовый ключ от 0.

$arr = array_values($n); 
+0

6 и 7 не должны входить в результаты, еще раз проверьте вопрос –

+0

Благодарим за информацию –

+1

Благодарю. Ты был прав. –

2

Использование ниже кода

$arrayOld = [1, 2, 3, 4, 5]; 
$arrayNew = [1, 4, 5, 6, 7]; 
print "<pre>"; 
print_r(array_diff($arrayOld, $arrayNew)); 

ВЫВОД:

Array 
(
[1] => 2 
[2] => 3 
) 
+0

О, ты прав. Я думал, что это даст все разные значения из обоих массивов –

-1

использование array_diff функция

$arrayOld = array(1, 2, 3, 4, 5); 
$arrayNew = array(1, 4, 5, 6, 7); 

print_r(array_diff($arrayOld, $arrayNew)); 
+0

Вопрос уже был дан :) –

0

используйте этот код.

$arrayOld = array(1, 2, 3, 4, 5); 
$arrayNew = array(1, 4, 5, 6, 7); 

print_r(array_diff($arrayOld, $arrayNew)); 

$compare = array(); 
$i=1; 
foreach($arrayOld as $k=>$v){ 
    if(!in_array($v, $arrayNew)){ 
     $compare[$i] = $v; 
     $i++; 
    } 
} 

$i=$i; 
foreach($arrayNew as $k=>$v){ 
    if(!in_array($v, $arrayOld)){ 
     $compare[$i] = $v; 
     $i++; 
    } 
} 
Смежные вопросы