如果数组值等于 0,PHP 删除条目

问题描述 投票:0回答:4

这是我打印数组时得到的结果。它是一个多维数组,包含以下值。

    [7] => Array
    (
        [0] => 1
        [1] => 34
        [2] => 181
        [3] => 50
    )



    [9] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 1
        [3] => 47
    )

   [2] => Array
    (
        [0] => 20
        [1] => 0
        [2] => 1621
        [3] => 45
    )
   [3] => Array
    (
        [0] => 120
        [1] => 0
        [2] => 121
        [3] => 45
    )

我想删除所有键 [1] 等于 0 的条目。完成修改后,我的最终数组应该像这样

    [7] => Array
    (
        [0] => 1
        [1] => 34
        [2] => 181
        [3] => 50
    )



[9] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 1
        [3] => 47
    )

有什么想法吗?

php arrays multidimensional-array
4个回答
5
投票

foreach
来救援:

foreach($arr as $key => $entry) {
    if(isset($entry[1]) && $entry[1] === 0) {
        unset($arr[$key]);
    }
}

还有一个

array_filter
示例:

$arr = array_filter($arr, function($entry) {
    return $entry[1] !== 0;
});

(假设至少是 php 5.3,尽管您可以通过创建一个命名函数并将其作为第二个参数传递给

array_filter
来解决这个问题)


1
投票

如果您只想删除值为 0 的数组,无论键是什么,您可以使用 array_filter

    <?php

    $array = array(1,2,3,4,5,0,'',null);

    print_r(array_filter($array));
    ?>

输出:

    Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

1
投票

您可以使用此代码从数组中删除空、null 和 0 值

代码:-

$array = array('one', 'two', '', 'three', null,'four','0');

$filteredarray = array_values( array_filter($array) );

print_r($filteredarray);

输出:-

Array
(
    [0] => one
    [1] => two
    [2] => three
    [3] => four
)

谢谢你!! 祝一切顺利!!


0
投票

将整数数组传递给

array_filter()
并将回调设置为
array_product()

每行的相乘值将确定数学“乘积”是否为零或非零。 换句话说,任何包含零的行都会为该行创建零总计,并且该行将被取消资格。

代码:(演示

var_export(
    array_filter($array, array_product(...))
);

相关:

© www.soinside.com 2019 - 2024. All rights reserved.