【问题标题】:how to remove certain elements from array with one foreach php如何使用一个foreach php从数组中删除某些元素
【发布时间】:2015-11-02 10:29:18
【问题描述】:

如果我想让代码看起来像这样,有没有办法

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

因为数组键是用 array_splice 移动的

【问题讨论】:

  • 您能否重新提出您的问题,您想做什么?
  • 您将键和值拆分为$key=>$value,那么为什么要$value['someprop']?只是$value还不够吗?
  • @VijayaSankarN 它看起来不太整洁,不。也许它是一个数组?

标签: php array-splice


【解决方案1】:

使用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); 
}

【讨论】:

  • 我认为索引是从 count($a)-1 到 0
【解决方案2】:

改用更优雅的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
        )

)

http://php.net/manual/en/function.array-filter.php

【讨论】:

  • 也不错,我想这只是使用 PHP 开发时“你需要知道的事情”之一。
猜你喜欢
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 2021-02-12
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多