PHP не может сбросить элемент массива внутри объекта

Я посмотрел на все вопросы об отмене сброса элементов, и я не делаю ни одной из этих ошибок, но элемент все еще там после того, как я его сбросил.

Обновление: я включил предложение RichardBernards ниже, но это все еще происходит:

    foreach($oldObject AS $key1=>$val1)
{
if (!empty($val1))
{
$newObject->$key1 = $val1;
if (is_array($oldObject->$key1))
{
foreach ($oldObject->$key1 as $key2 => $val2)
{
if (empty($val2))
{
print('Found to be empty: unsetting newObject->' . $key1 . '[' . $key2 . ']');
unset($newObject->$key1[$key2]);
if (array_key_exists($key2, $newObject->$key1))
{
print('The key ' . $key2 . ' still exists. What is going on?');
}
}
}
}
}
}

В этом коде текст «Ключ все еще существует. Что происходит?» печатается каждый раз.

Я должен удалить пустые элементы, потому что я делаю SOAP-вызов с объектом, и SOAP отклоняет объект, если в нем есть пустые строки. Но почему $newObject->$var[$key] все еще существует после того, как я явно сбросил его?

Это потому, что я пытаюсь сбросить элемент массива внутри объекта?

Любая помощь будет принята с благодарностью.

1

Решение

Это потому, что вы отменяете переменную в foreach по массиву … Это невозможно. Самый простой способ решить эту проблему — скопировать массив и перейти по первому массиву, удалить ключ во втором массиве … Затем использовать второй массив в своем коде.

Долгий путь заключается в использовании таких функций, как array_walk () или хранении ключей, которые вы хотите сбросить, в другом массиве и сброс их после foreach …

0

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

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

По вопросам рекламы [email protected]