Это обычно вызывается при использовании системы сборки как Муравей Apache , который только компилирует файлы Java, когда файл Java является более новым, чем файл класса. Если сигнатура метода изменяется, и классы использовали старые вещи версии, может не быть скомпилирован правильно. Обычная фиксация должна сделать, полное восстанавливает (обычно "муравей, чистый" тогда "муравей").
Иногда это может также быть вызвано при компиляции против одной версии библиотеки, но выполнении против различной версии.
Если вы хотите работать рекурсивно, вам нужно передать массив как ссылку , иначе вы будете делать много ненужного копирования:
function recursive_unset(&$array, $unwanted_key) {
unset($array[$unwanted_key]);
foreach ($array as &$value) {
if (is_array($value)) {
recursive_unset($value, $unwanted_key);
}
}
}
Мое предложение:
function removeKey(&$array, $key)
{
if (is_array($array))
{
if (isset($array[$key]))
{
unset($array[$key]);
}
if (count($array) > 0)
{
foreach ($array as $k => $arr)
{
removeKey($array[$k], $key);
}
}
}
}
removeKey($myarray, 'Part');
вы хотите array_walk
function remove_key(&$a) {
if(is_array($a)) {
unset($a['fields']);
array_walk($a, __FUNCTION__);
}
}
remove_key($myarray);
function sanitize($arr) {
if (is_array($arr)) {
$out = array();
foreach ($arr as $key => $val) {
if ($key != 'fields') {
$out[$key] = sanitize($val);
}
}
} else {
return $arr;
}
return $out;
}
$myarray = sanitize($myarray);
Результат:
array (
'Item' =>
array (
'Part' =>
array (
),
),
'Owner' =>
array (
'Company' =>
array (
'Locations' =>
array (
'State' =>
array (
),
),
),
),
)
Попробуйте эту функцию. Он удалит ключи с 'полями' и оставит остальную часть массива.
function unsetFields($myarray) {
if (isset($myarray['fields']))
unset($myarray['fields']);
foreach ($myarray as $key => $value)
$myarray[$key] = unsetFields($value);
return $myarray;
}
Рекурсивно обходить массив (по ссылке) и отключать соответствующие ключи.
clear_fields($myarray);
print_r($myarray);
function clear_fields(&$parent) {
unset($parent['fields']);
foreach ($parent as $k => &$v) {
if (is_array($v)) {
clear_fields($v);
}
}
}