如果满足条件(在键和值上),则从数组中删除子数组

时间:2014-07-11 16:04:08

标签: php arrays multidimensional-array

我有一大堆相同的子阵列,最小的例子可能是:

array(4) {
  [0]=>
  array(2) {
    ["id_product"]=>
    string(4) "1372"
    ["quantity"]=>
    int(0)
   }
  [1]=>
  array(2) {
    ["id_product"]=>
    string(4) "1373"
    ["quantity"]=>
    int(1)
   }
  [2]=>
  array(2) {
    ["id_product"]=>
    string(4) "1374"
    ["quantity"]=>
    int(2)
   }
  [3]=>
  array(2) {
    ["id_product"]=>
    string(4) "1375"
    ["quantity"]=>
    int(0)
   }
}

我的目标是创建一个新数组,排除quantity等于int(0)的子数组,这可能会产生类似的结果:

array(4) {
  [1]=>
  array(2) {
    ["id_product"]=>
    string(4) "1373"
    ["quantity"]=>
    int(1)
   }
  [2]=>
  array(2) {
    ["id_product"]=>
    string(4) "1374"
    ["quantity"]=>
    int(2)
   }
}

我尝试使用array_search()unset(),但无济于事。有关如何使用这些函数的任何建议,以便我可以排除任何具有以下条件的子数组:sub-key = x和value = y。

非常感谢你帮助我。

2 个答案:

答案 0 :(得分:1)

使用array_filter()

的完美情况
$newArray = array_filter(
    $originalArray,
    function($value) {
        return $value['quantity'] > 0;
    }
);

答案 1 :(得分:1)

尝试使用自定义代码

function array_filter(){
    $newArray = array();
    foreach($array as $key => $value){
        if($value["quantity"] > 0)
            $newArray[] = $value
    }
    return $newArray;
}

享受:)