【问题标题】:php multidimensional array check if value is greater [closed]php多维数组检查值是否更大[关闭]
【发布时间】:2018-06-06 12:40:27
【问题描述】:

我有下面的数组

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

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

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

)

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

【问题讨论】:

  • 这并不难。你肯定试过了,对吧?
  • array_columnarray_map 的组合(或任何其他迭代数组的方法)应该可以很好地完成工作。如果遇到困难,请尝试自己使用它们并发布更新/问题,但请先尝试一下。
  • 请始终通过提供一些 cmets 来回应答案,或者,如果对您有帮助,请将其标记为绿色并点赞,这是感谢所有程序员的最佳方式

标签: php search multidimensional-array


【解决方案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】:

    循环遍历你的数组元素,在这个例子中我已经将它分配给一个名为 $arrayElements 的变量...

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

    希望这是有道理的...如果没有,请查找 Foreach 循环

    如 Andrew 在 cmets 中所述,其他 PHP 函数可以帮助您完成此过程,但从 for / foreach 循环开始,以便您了解其背后的逻辑。

    重构了一下:

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

    【讨论】:

      【解决方案3】:

      您可以使用 array_column 和 max。

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

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

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

      Max 将取数组项 qty 中的最大值。
      如果值大于 0,则 if 为真。

      【讨论】:

        猜你喜欢
        • 2018-01-20
        • 1970-01-01
        • 2018-11-09
        • 2013-05-24
        • 1970-01-01
        • 1970-01-01
        • 2019-04-01
        • 2010-09-26
        • 2010-09-13
        相关资源
        最近更新 更多