2015-01-04 1 views

ответ

1

Я решил это следующим образом,

$array1 = array(array('StudentId' => 1), array('StudentId' => 2)); 
$array2 = array(array('StudentId' => 1)); 
foreach($array1 as $a=>$val){ 
    if(in_array($val,$array2)){ 
      unset($array1[$a]); 
    } 
} 

var_dump(array_values($array1)); 
2

Это вы что искали?

$array1 = array(array('StudentId' => 1), array('StudentId' => 2)); 
$array2 = array(array('StudentId' => 1)); 

var_dump(array_diff_key($array1, $array2)); 

Выход:

array(1) { [1]=> array(1) { ["StudentId"]=> int(2) } }

+1

'array_diff_key' проверить только ключ, а не значение. Поскольку '$ array1' имеет ключи' [0], [1] 'и' $ array2' имеет ключи '[0]', результат всегда будет возвращать второй ключ, независимо от его значения. – Gil

+0

@Gil Согласен, однако, ОП не просил проверять значения, но чтобы получить разницу между двумя массивами. – RhapX

+0

вот почему я не назвал это неправильным ответом, только хотел указать на этот вопрос :) – Gil

1

Посмотрите на http://php.net/manual/en/function.array-diff.php

массива array_diff (массив $ array1, массив $ массив2 [, массив $ ...])

Сравнивает массив 1 с одним или несколькими другими массивами и возвращает в массиве 1, которые не присутствуют ни в одном из других массивов.

+0

Я попробовал 'array_diff()', но затем возникла ошибка PHP, называемая ** Array для преобразования строк ** – KTAnj

+0

Если вы пытаетесь выполнить «echo» или «print», вы столкнетесь с ошибкой, потому что возвращаемое значение это массив. Используйте 'var_dump (array_diff ($ arr1, $ arr2));' – Homberto

+0

Я пробовал 'var_dump (array_diff ($ arr1, $ arr2));'. Также обнаружено, что ошибка – KTAnj