php多维数组检查值是否更大

时间:2018-06-06 12:40:27

标签: php search multidimensional-array

我有以下数组

    Array
(
    [0] => Array
        (
            [qty] => 46
        )

    [1] => Array
        (
            [qty] => 1
        )

    [2] => Array
        (
            [qty] => 0
        )

)

如果任何值大于0,我想在此数组中搜索。我该怎么做?

3 个答案:

答案 0 :(得分:1)

循环遍历数组元素,我已将其分配给此示例中名为$ arrayElements的变量...

$qtyValue = 0;    
foreach($arrayElements as $arrayElement) {
   $qtyValue = ($arrayElement['qty'] > 0) ? true : false; 
   if($qtyValue) {
      break;
   }
}

if($qtyValue) {
  //Value greater than 0 exists
}

希望有意义......如果没有,请查看Foreach循环

其他PHP函数可以帮助解决这个问题,正如安德鲁在评论中所说的那样,但是从for / foreach循环开始,这样你才能理解它背后的逻辑。

重构一下:

$qtyValue = 0;    
foreach($arrayElements as $arrayElement) {
   if($arrayElement['qty'] > 0) {
      $qtyValue = true
      break;
   }
}

if($qtyValue) {
  //Value greater than 0 exists
}

答案 1 :(得分:1)

希望这会对您有所帮助

第一种方法使用array_maparray_filter函数来获得所需的结果:

$arr =Array ('0' => Array('qty'=>46),'1'=>Array('qty'=>1),'2'=>Array('qty'=>0));

$quantities = array_filter(array_column($arr, 'qty'),function($n){
    return ($n > 0) ;
});

print_r($quantities);
/* $quantities contains all qty higher than 0 */

工作演示:https://eval.in/1016144

使用foreach

第二次 方式

$arr =Array ('0' => Array('qty'=>46),'1'=>Array('qty'=>1),'2'=>Array('qty'=>0));
foreach ($arr as $key => $item) 
 {
    if ($item['qty'] > 0 )
    {
        $data[] = $item['qty'];
    }
 }
 print_r($data);
 /* $data contains all qty higher than 0 */

工作演示:https://eval.in/1016097

输出:

Array
(
    [0] => 46
    [1] => 1
)

更多信息:http://php.net/manual/en/function.array-filter.php

答案 2 :(得分:0)

您可以使用array_column和max。

Echo max(array_column($arr, "qty"));

或者如果你想要一个布尔回归

If(max(array_column($arr, "qty")){
    Echo "yes";
}Else{
    Echo "no";
}

Max将从数组项目数量中获取最大值。
如果该值大于0,则if为真。