如何用一个 foreach php 从数组中删除某些元素
how to remove certain elements from array with one foreach php
如果我想让代码看起来像这样,有什么办法吗
foreach ($a as $key=>$value) {
if (( $value['someprop'] == 'some prop' ) || ( $value['someprop'] == 'some other prop' ))
array_splice($a, $key, 1);
因为数组键用 array_splice
移位
使用 for 循环,从数组末尾倒数:
(这样您就不会因索引更改而遇到麻烦)
for($i = count($myArray); $i>0; $i--)
{
$value = $myArray[$i];
if (( $value['someprop'] == 'some prop' ) || ( $value['someprop'] == 'some other prop' ))
array_splice($myArray, $i-1, 1);
}
改用更优雅的array_filter
:
$a = [
['someprop' => 'some prop'],
['someprop' => 'not some prop'],
['someprop' => 'some other prop'],
];
方法:
$filtered = array_filter($a, function($value) {
return !($value['someprop'] == 'some prop' || $value['someprop'] == 'some other prop');
});
print_r($filtered):
Array
(
[1] => Array
(
[someprop] => not some prop
)
)
如果我想让代码看起来像这样,有什么办法吗
foreach ($a as $key=>$value) {
if (( $value['someprop'] == 'some prop' ) || ( $value['someprop'] == 'some other prop' ))
array_splice($a, $key, 1);
因为数组键用 array_splice
移位使用 for 循环,从数组末尾倒数:
(这样您就不会因索引更改而遇到麻烦)
for($i = count($myArray); $i>0; $i--)
{
$value = $myArray[$i];
if (( $value['someprop'] == 'some prop' ) || ( $value['someprop'] == 'some other prop' ))
array_splice($myArray, $i-1, 1);
}
改用更优雅的array_filter
:
$a = [
['someprop' => 'some prop'],
['someprop' => 'not some prop'],
['someprop' => 'some other prop'],
];
方法:
$filtered = array_filter($a, function($value) {
return !($value['someprop'] == 'some prop' || $value['someprop'] == 'some other prop');
});
print_r($filtered):
Array
(
[1] => Array
(
[someprop] => not some prop
)
)