Я хочу циклично выполниться через массив с foreach
проверять, существует ли значение. Если значение действительно существует, я хочу удалить элемент, который содержит его.
У меня есть следующий код:
foreach($display_related_tags as $tag_name) {
if($tag_name == $found_tag['name']) {
// Delete element
}
}
Я не знаю, как удалить элемент, после того как значение найдено. Как я удаляю его?
Я должен использовать foreach
для этой проблемы. Существуют, вероятно, альтернативы foreach
, и добро пожаловать совместно использовать их.
Если вы также получаете клавишу, вы можете удалить этот элемент следующим образом:
foreach ($display_related_tags as $key => $tag_name) {
if($tag_name == $found_tag['name']) {
unset($display_related_tags[$key]);
}
}
foreach($display_related_tags as $key => $tag_name)
{
if($tag_name == $found_tag['name'])
unset($display_related_tags[$key];
}
Как уже упоминалось, вам нужно выполнить foreach с ключом и сбросить его с помощью ключа, но обратите внимание, что изменение массива во время итерации в целом является плохой идеей, хотя Я не уверен в правилах PHP на этот счет.
Вместо того, чтобы выполнять цикл foreach() на массиве, было бы быстрее использовать функцию array_search() для поиска нужного ключа. На маленьких массивах я бы использовал foreach() для лучшей читабельности, но для больших массивов, или часто выполняемого кода, это должно быть немного более оптимальным:
$result=array_search($unwantedValue,$array,true);
if($result !== false) {
unset($array[$result]);
}
Нужен строгий оператор сравнения !==, так как array_search() может возвращать 0 в качестве индекса $unwantedValue.
Также в приведенном примере будет удалено только первое значение $unwantedValue, если $unwantedValue может встречаться более одного раза в $array, то следует использовать array_keys(), чтобы найти их все:
$result=array_keys($array,$unwantedValue,true)
foreach($result as $key) {
unset($array[$key]);
}
Проверьте http://php.net/manual/en/function.array-search.php для дополнительной информации.
.