PHP:数组中的计数值

PHP:数组中的计数值,php,arrays,count,Php,Arrays,Count,我有这个阵列: array(66) { [0]=> array(2) { ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "105a" } [1]=> array(2) { ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "105b" } [2]=> array(2) {

我有这个阵列:

array(66) { 
  [0]=> array(2) { 
    ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "105a" 
  } 
[1]=> array(2) { 
    ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "105b" 
  } 
[2]=> array(2) { 
     ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "105c" 
  } 
[3]=> array(2) { 
    ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "105d" 
  } 
[4]=> array(2) { 
    ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "117b" 
  } 
[5]=> array(2) {
    ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "117c" 
  } 
[6]=> array(2) { 
    ["location"]=> string(10) "Breakwater" ["bsid"]=> string(4) "123a" 
  } 
[7]=> array(2) { 
    ["location"]=> string(10) "Whateverelse" ["bsid"]=> string(4) "123b" 
  }
}
我如何计算我有多少防波堤,还有多少其他防波堤,然后得到这样的东西:

array(2) { 
  [0]=> array(2) { 
      ["Breakwater"]=> string(2) "20" 
  } [1]=> array(2) { 
      ["Whateverelse"]=> string(1) "1"  
  }
}

只需在原始数组中循环,每次命中一个位置时,在索引为位置的位置数组中增加一个计数器

$loc = array();
foreach($arr as $value) {
    $location = $value['location'];
    if(isset($loc[$location])) {
        $loc[$location]++;
    } else {
        $loc[$location] = 1;
    }
}
print_r($loc);
将输出

array
(
    ["Breakwater"] => 7,
    ["Whateverelse"] => 1
}
我终于明白了:

$output = array("Breakwater" => 0, "Whateverelse" => 0);

foreach ($array as $val) {
    $output["Breakwater"] += ($val["location"] == "Breakwater") ? 1 : 0;
    $output["Whateverelse"] += ($val["location"] == "Whateverelse") ? 1 : 0;
}

var_dump($output);

这比我的好:)在这种情况下是的,但是如果阵列中有10000个位置呢@Ryan的答案是通用的,无论数组中有多少记录和位置,它都有效。@ex3v,我同意,请看我对Ryan答案的评论