У меня есть это 2 массива:PHP - array_diff с двумя массивами с различной размерностью
$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 с $ иглы и $ стогом, но я получаю сообщение об ошибке, потому что $ игольчатого массив является многомерным, но " тест»ключ имеет только одно измерение:
foreach ($needle as $key => $value) :
$left[$key] = array_diff($needle[$key],$haystack[$key]);
endforeach;
Предупреждение: array_diff(): Аргумент # 1 не является массивом
Предупреждение: array_diff(): Аргумент # 2 не является массивом
Как я могу решить проблему? Мне нужно поддерживать в $ left array только значения «rowid» и «description» (я могу отказаться от значения «test»).
$ осталось должно быть:
Array
(
[rowid] => Array
(
[0] => 300
[1] => 400
)
[description] => Array
(
[0] => other
[1] => other else
)
)
Спасибо за помощь!
Вы проезжаете свой массив и пытаетесь «array_diff» каждого элемента. Но наше последнее 'test'-значение не является массивом. Поэтому вы получаете предупреждение. Проверьте элемент перед тем, как передать его функции с помощью функции 'is_array()' – Fuzzyma