У меня есть два массива, у которых есть все данные, и еще один ассоциативный массив ключей, которые я хотел бы удалить.PHP: Как удалить элементы из одного ассоциативного массива с использованием другого ассоциативного массива
$all_data = array(
'one' =>array(
'one_one'=>array(
'one_one_one'=>'value',
'one_one_two'=>'value',
),
'one_two'=> array(
'one_two_one'=>'value',
'one_two_two'=>'value',
)
),
'two' =>array(
'two_one'=>array(
'two_one_one' =>'value',
'two_one_two' =>'value',
),
'two_two'=>array(
'two_two_one'=>'value',
'two_two_two'=>'value',
)
)
);
$remove_elements = array(
'one' =>array(
'one_one',
'one_two'=> array(
'one_two_one',
)
),
'two'
);
Выход, который я хотел бы, будет выглядеть следующим образом.
$result = array(
'one' =>array(
'one_two'=> array(
'one_two_two'=>'value',
)
)
);
Я попытался array_diff, но я получаю «массив для преобразования строки» ошибка, я предполагаю, что это потому, что они являются вложенными массивами.
Я создал функцию, но не могу заставить ее работать.
function arrayRecursiveUnset($array_1, $array_2) {
foreach ($array_1 as $array_1_key => $array_1_value) {
if (array_key_exists($array_1_key, $array_2)) {
if (is_array($array_1_value)) {
$array_1[$array_1_key] = arrayRecursiveUnset($array_1_value, $array_2[$array_1_key]);
} else {
unset($array_1[$array_1_key]);
}
}
}
return $array_1;
}
Вы пробовали что-нибудь? – TreeTree
В чем вопрос? –
Звучит больше как _do это для меня_ – user5173426