Я хочу перебрать массив с помощью, foreach
чтобы проверить, существует ли значение. Если значение существует, я хочу удалить элемент, который его содержит.
У меня такой код:
foreach($display_related_tags as $tag_name) {
if($tag_name == $found_tag['name']) {
// Delete element
}
}
Я не знаю, как удалить элемент после того, как значение найдено. Как мне его удалить?
Я должен использовать foreach
для этой проблемы. Вероятно, есть альтернативы foreach
, и вы можете ими поделиться.
$key => &$tag_name
stackoverflow.com/a/2008893/922522json_encode()
. Вы можете решить эту проблему с помощью$display_related_tags = array_values ($display_related_tags);
after theforeach
loop.$projects = array_filter($projects, function ($project) { return count($project->roles) > 0; });
преобразует результат в объект.Лучшее решение - использовать
array_filter
функцию:Как гласит документация по php :
источник
ARRAY_FILTER_USE_KEY - pass key as the only argument to callback instead of the value ARRAY_FILTER_USE_BOTH - pass both value and key as arguments to callback instead of the value
Default is 0 which will pass value as the only argument to callback instead.
Тем не менее, повторное чтение ответа в этом случае, конечно, не имеет значения, как вы утверждаете.display_related_tags = array_values(display_related_tags);
его после него.источник
Вместо того, чтобы выполнять цикл foreach () для массива, было бы быстрее использовать array_search () для поиска правильного ключа. На небольших массивах я бы использовал foreach для лучшей читаемости, но для больших массивов или часто выполняемого кода это должно быть немного более оптимальным:
Оператор строгого сравнения! == необходим, потому что array_search () может вернуть 0 в качестве индекса $ unwantedValue.
Кроме того, в приведенном выше примере будет удалено только первое значение $ unwantedValue, если $ unwantedValue может встречаться более одного раза в массиве $, вы должны использовать array_keys (), чтобы найти все из них:
Посетите http://php.net/manual/en/function.array-search.php для получения дополнительной информации.
источник
если у вас есть сценарий, в котором вам нужно удалить более одного значения из массива foreach, в этом случае вам нужно передать значение по ссылке для каждого: я пытаюсь объяснить этот сценарий:
во втором цикле вы хотите отключить записи первых циклов, которые не появляются снова в итерации для повышения производительности, или же затем сбрасываются из памяти, потому что в памяти они присутствуют и будут приходить в итерациях.
источник
Уже есть ответы, которые проливают свет на то, как сбить с толку. Вместо того, чтобы повторять код во всех ваших классах, сделайте функцию, как показано ниже, и используйте ее в коде всякий раз, когда это необходимо. В бизнес-логике иногда не нужно раскрывать некоторые свойства. См. Ниже один лайнер-вызов для удаления
Звоните как:
источник
Как уже упоминалось, вы хотите выполнить foreach с ключом и отключить его с помощью ключа, но обратите внимание, что изменение массива во время итерации в целом является плохой идеей, хотя я не уверен в правилах PHP по этому поводу. экспромтом.
источник
foreach
илиfor
конструкции вместо итерации вообще?