【问题标题】:Counting within a multidimensional array [closed]在多维数组中计数[关闭]
【发布时间】:2012-11-16 14:20:26
【问题描述】:

我有一个这样的数组:

$resellers =  Array
(
    [40] => Array
        (
            [state] => AB
            [city] => Calgary
        )

    [185] => Array
        (
            [state] => AB
            [city] => Calgary
        )

    [141] => Array
        (
            [state] => AB
            [city] => Calgary
        )

    [41] => Array
        (
            [state] => AB
            [city] => Grande Prairie
        )

    [68] => Array
        (
            [state] => BC
            [city] => Burnaby
        )

    [51] => Array
        (
            [state] => BC
            [city] => Campbell River
        )

    [61] => Array
        (
            [state] => BC
            [city] => Kamloops
        )
  )

我想知道是否有一种简单的方法可以计算“Alberta”(应该是 4)和 BC(应该是 3)有多少个值。

【问题讨论】:

标签: php arrays multidimensional-array counting


【解决方案1】:
array_count_values(array_map(function($item) {
   return $item['state'];
}, $resellers));

【讨论】:

  • 这里缺少一些右括号
  • @JiminyCricket:我想念您在提问之前没有进行任何(重新)搜索。
  • 对我找到的主题不满意。感谢 Cedrun,这让我走上了正确的道路。我现在解决了。
  • 创建解决方案...谢谢
【解决方案2】:

只需遍历它即可找到您需要的状态。

function countState($data, $state) {
    $i = 0;
    foreach($data as $point)
        if($point['state'] === $state)
            $i++;

    return $i;
}

echo "Alberta found " . countState($array, "AB") . " times"!

【讨论】:

    【解决方案3】:

    试试:

    $arr = array(array('state'=>'AB', 'city'=>'Calgary'), ...); //your array 
    
    function count_values( $arr, $value) {
     $count = 0;
     foreach($arr as $v) {
      foreach($v as $m) {
       if( $m['state'] === $value )
        $count++;
      }
     }
     return $count;
    }
    
    $count_ab = count_values($arr, 'AB');
    $count_bc = count_values($arr, 'BC');
    

    【讨论】:

    • 我想在现实生活中会有两个以上的值要计算。
    • 这正是创建 Code Monster ow.ly/flqxz 的方法
    【解决方案4】:

    在 Cedrun 的回复的帮助下解决了。

    内置数组:

     $state_count = array_count_values( array_map(function($item){return $item['state'];}, $r_resellers));
    

    然后输出:

    echo $state_count["AB"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多