从 foreach 循环中的数组中删除一个元素 *without* using $key => $val
Remove an element from an array within a foreach loop *without* using $key = > $val
我在 PHP 工作,我试图遍历一个数组,在某些情况下,删除数组的特定元素。
我见过多个与此类似的问题,但答案总是涉及在 foreach 中使用 $key = $val
。我只有 &$element
。这是一个相对较大的循环,切换到 $key => $value
需要 很多 的重写和测试;所以我希望有一种方法可以对引用的元素进行处理。 (基本上,根据元素的值,可能会发生很多不同的事情。移除只是众多可能性中的一种。)
请注意,我是通过引用而不是值使用 $element。我发誓这曾经有效,但现在无效(当我从 PHP 5 移动到 7 时可能坏了?)
所以...
foreach( $things as &$element ) {
...
if( $element == 'hello' ) {
unset( $element );
}
...
}
有没有办法使用 &$element 来完成这项工作?
$value
只是你赋值的变量;是任意名称。所以你可以一起使用 $key=>$value
和你的 &$element
引用。
foreach ($things as $key => &$element) { /* .. */ }
我在 PHP 工作,我试图遍历一个数组,在某些情况下,删除数组的特定元素。
我见过多个与此类似的问题,但答案总是涉及在 foreach 中使用 $key = $val
。我只有 &$element
。这是一个相对较大的循环,切换到 $key => $value
需要 很多 的重写和测试;所以我希望有一种方法可以对引用的元素进行处理。 (基本上,根据元素的值,可能会发生很多不同的事情。移除只是众多可能性中的一种。)
请注意,我是通过引用而不是值使用 $element。我发誓这曾经有效,但现在无效(当我从 PHP 5 移动到 7 时可能坏了?)
所以...
foreach( $things as &$element ) {
...
if( $element == 'hello' ) {
unset( $element );
}
...
}
有没有办法使用 &$element 来完成这项工作?
$value
只是你赋值的变量;是任意名称。所以你可以一起使用 $key=>$value
和你的 &$element
引用。
foreach ($things as $key => &$element) { /* .. */ }