假设我有以下数组。我怎样才能删除“是”这个词
(索引可以是随机的,所以这样做unset($words[2])
不是一种选择)
$words= array("hi", "how", "are", "you", "doing");
//array_remove("are", $words); <== How to do this in php?
function array_remove($word, &$array)
{
if (($key = array_search('are', $array)) !== false) {
unset($array[$key]);
}
}
用法:
$words = array("hi", "how", "are", "you", "doing");
array_remove('are', $words);
您可以使用array_search查找索引并使用 unset 将其删除
if (($index = array_search('are', $words)) !== false) {
unset($words[$index]);
}
array_search
如果没有找到任何项目,则返回 false。
如果你想删除多个“are”实例,你可以试试array_keys
foreach(array_keys($words,"are") as $index) {
unset($words[$index])
}
尽管这会使值为“are”的元素简单地消失。因此,在您的示例中,您的数组将不再包含索引 2。这可能会导致在索引迭代上工作的循环出现问题。要消除这一点,您可以使用array_values
$words = array_values($words);
如果您想要一个功能,这正是您的评论所描述的:
function array_remove($needle, & $haystack) {
foreach ($haystack as $key => $value) {
if ($value === $needle) {
unset($haystack[$key]);
break;
}
}
}
$words= array("hi", "how", "are", "you", "doing");
array_remove('are', $words);
echo '<pre>'; print_r($words);
如果您希望该函数删除所有实例,$needle
那么只需删除break;
.