Как удалить объект из массива в цикле foreach?

Я выполняю итерации через массив объектов и хочу удалить один из объектов на основе, он - 'идентификационное' свойство, но мой код не работает.

foreach($array as $element) {
    foreach($element as $key => $value) {
        if($key == 'id' && $value == 'searched_value'){
            //delete this particular object from the $array
            unset($element);//this doesn't work
            unset($array,$element);//neither does this
        } 
    }
}

Любые предложения. Спасибо.

132
задан ababa 21 February 2010 в 02:51
поделиться

3 ответа

foreach($array as $elementKey => $element) {
    foreach($element as $valueKey => $value) {
        if($valueKey == 'id' && $value == 'searched_value'){
            //delete this particular object from the $array
            unset($array[$elementKey]);
        } 
    }
}
214
ответ дан 24 November 2019 в 00:11
поделиться

Я не особо разбираюсь в php-программировании, но могу сказать, что в C # вы не можете изменять массив во время итерации по нему. Вы можете попробовать использовать цикл foreach для определения индекса элемента или элементов, которые нужно удалить, а затем удалить элементы после цикла.

0
ответ дан 24 November 2019 в 00:11
поделиться

Похоже, ваш синтаксис для unset неверен, и отсутствие переиндексации может вызвать проблемы в будущем. См .: раздел о массивах PHP .

Правильный синтаксис показан выше. Также имейте в виду значения массива для переиндексации, чтобы вы никогда не индексировали то, что вы ранее удалили.

1
ответ дан 24 November 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: