Php 使用引用删除数组元素的最佳方法是什么

Php 使用引用删除数组元素的最佳方法是什么,php,reference,foreach,Php,Reference,Foreach,假设我对一个数组使用一个foreach循环,并且每个元素的值都是引用,我想删除一个元素,我该怎么做呢 $array = array("1" => "PHP code tester Sandbox Online", "foo" => "bar", 6, 5 => 89009, "case" => "Random Stuff", "

假设我对一个数组使用一个
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有没有办法做到这一点,或者我必须研究其他解决方案?

这也可以在没有参考的情况下完成

foreach( $array as $d ){
    if($d == 5) unset($array[$d]);
}
编辑


您刚刚更新了问题,不能有两个同名索引。索引
5
两次无效

我想你要做的是删除数组中其值为5的元素, 在这种情况下,你必须写:

foreach ($array as $d => $v) {
    if ($d == 5)
        unset ($array[$d]);
}
foreach($array as$v)
正在枚举数组的值,而不是它的键


更多信息请参见

,如果您试图基于键而非值删除数组元素,则无需执行循环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]);
};

“foo”=>“bar”之后有一个单键输入
谢谢。我对格式做了一些调整,以突出显示这一点。@GeorgeCummins Thanksy您不能在同一数组中重复一个索引。在上面的代码中,索引5正在被重复,因此将被覆盖,并对此进行更新。谢谢,如果值为5,您是否取消设置其键为5的数组元素?这有意义吗?我很确定
foreach($array as$d)
正在枚举数组的值,而不是它的键。。