如何使用一个foreach php从数组中删除某些元素

如何使用一个foreach php从数组中删除某些元素,php,array-splice,Php,Array Splice,有没有办法让代码看起来像这样 foreach ($a as $key=>$value) { if (( $value['someprop'] == 'some prop' ) || ( $value['someprop'] == 'some other prop' )) array_splice($a, $key, 1); 因为数组键是使用for循环随数组拼接移位的,从数组末尾开始倒数: (这样,您就不会因为索引的更改而遇到麻烦) 使用更优雅的阵列过滤器: $a

有没有办法让代码看起来像这样

foreach ($a as $key=>$value) {
    if (( $value['someprop'] == 'some prop' ) || ( $value['someprop'] == 'some other prop' ))
        array_splice($a, $key, 1); 

因为数组键是使用for循环随数组拼接移位的,从数组末尾开始倒数:

(这样,您就不会因为索引的更改而遇到麻烦)


使用更优雅的
阵列过滤器

$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');
});
打印(已过滤):


您能重新表述您的问题吗?您想做什么?您将键和值拆分为
$key=>$value
那么为什么
$value['someprop']
?仅仅是
$value
还不够吗?@VijayaSankarN它看起来不是很整洁,不是。也许它是一个数组数组?我认为索引从count($a)-1到0也不错,我想这只是使用PHP开发时“需要知道的事情”之一。
$filtered = array_filter($a, function($value) {
    return !($value['someprop'] == 'some prop' || $value['someprop'] == 'some other prop');
});
Array
(
    [1] => Array
        (
            [someprop] => not some prop
        )

)