<?php
$data = [
'one' => '...',
'two' => [
'three' => '...',
'four' => '...',
'five' => [
'six' => '...',
'seven' => '...',
],
],
];
$fields = [
'one',
'two' => [
'four',
'five' => [
'seven',
],
],
];
var_dump(filterRecursive($data, $fields));
function filterRecursive(array $data, array $fields)
{
foreach ( $data as $key => &$value ) {
if ( is_array($fields[$key]) ) {
$value = filterRecursive($value, $fields[$key]);
} elseif ( !in_array($key, $fields) ) {
unset($value);
}
}
return $data;
}
preferences:
50.83 ms | 402 KiB | 5 Q