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答案的评论