Search code examples
phparraysmultidimensional-array

PHP remove entry if array value equals to 0


This is what i get when i print_r my array. it's a multi-dimensional array which contains the following values.

    [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
    )

I would like to remove all entries in which the key [1] equals to 0. After doing the modifications, My final array should like this

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



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

Any ideas ?


Solution

  • foreach to the rescue:

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

    And an array_filter example:

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

    (assumes at least php 5.3, though you can get around that by creating a named function and passing that as the second parameter to array_filter)