Array_diff с двумя массивами с разным измерением

У меня есть 2 массива:

$haystack = array("rowid" => array("100", "200"), "description" => array ("something", "something else"));
$needle = array("rowid" => array("200", "300", "400"), "description" => array ("something else", "other", "other else"), "test" => "bye");

Я хочу сделать array_diff с $ needle и $ haystack, но я получаю ошибку, потому что массив $ needle является многомерным, но ключ «test» имеет только одно измерение:

foreach ($needle as $key => $value) :
$left[$key] = array_diff($needle[$key],$haystack[$key]);
endforeach;

Предупреждение: array_diff (): аргумент № 1 не является массивом
Предупреждение:
array_diff (): аргумент № 2 не является массивом

Как я могу решить проблему?
Мне нужно сохранить в массиве $ left только значения «rowid» и «description» (я могу отказаться от значения «test»).

$ слева должно быть:

Array
(
[rowid] => Array
(
[0] => 300
[1] => 400
)

[description] => Array
(
[0] => other
[1] => other else
)

)

Спасибо за помощь!

1

Решение

удалить «test» => «пока»; от $ needle или напишите их правильно.

//array_diff takes arguments as array.
foreach ($needle as $key => $value) :
$left[$key] = array_diff($needle[$key],$haystack[$key]);
//when $key = test $needle[$key]=bye which is not array
//thats why you got Warning: array_diff(): Argument #1 is not an array  this warning

//again when $key=test ,$haystack[$key]=null which is not array
//thats why you got Warning: array_diff(): Argument #2 is not an array
endforeach;
0

Другие решения

Других решений пока нет …