假设我正在为数组使用foreach
循环,并且值是每个元素的引用,我想删除一个元素,我该怎么做呢?
$array = array("1" => "PHP code tester Sandbox Online",
"foo" => "bar",
6,
5 => 89009,
"case" => "Random Stuff",
"PHP Version" => phpversion()
);
foreach( $array as &$d ){
if($d == 5) unset($d);
}
但它没有做任何事情。有没有办法使用foreach做到这一点,或者我必须研究其他解决方案?
答案 0 :(得分:2)
我认为您尝试做的是删除其值为5的数组元素, 在这种情况下,你必须写:
foreach ($array as $d => $v) {
if ($d == 5)
unset ($array[$d]);
}
foreach ($array as $v)
枚举数组的值,而不是其键。
答案 1 :(得分:1)
这也可以在没有参考的情况下完成
foreach( $array as $d ){
if($d == 5) unset($array[$d]);
}
修改强>
您刚刚更新了您的问题,您不能拥有2个同名的索引。您有两次索引5
无效
答案 2 :(得分:0)
如果您尝试根据键而不是值来删除数组元素,则不需要创建循环if语句。您可以像在示例中一样明确地取消设置该键,看起来就像您尝试这样做:
unset($array[5]);
如果有一个你想要删除的键列表,那么你将在foreach数组中执行。
$array = array("1" => "PHP code tester Sandbox Online",
"foo" => "bar",
6,
5 => 89009,
"case" => "Random Stuff",
"PHP Version" => phpversion()
);
$remove = array('5', 'foo', 'case');
foreach ($remove as $r){
unset($array[$r]);
};