如何计算数组中值等于常量的元素数量?例如,
$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
我怎样才能直接知道里面有多少个“Ben”?
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];
$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));
输出:
3
echo count(array_keys($array, "purple"));
会打印 0
,没有 Notice
。这比 array_count_values()
更优秀/更清晰。+1 - mickmackusacount(array_keys())
的解决方法总是更快。在PHP 5.6中,对于具有较少不同元素的数组,array_count_values()
版本更快。总体来说,这两个函数都非常快(至少对我正在测试的数组如此)。 - miile7array_count_values()
则会抱怨。+1 - fbastien在二维数组中计算一个值,以下是有用的代码片段来处理并计数特定值-
<?php
$list = [
['id' => 1, 'userId' => 5],
['id' => 2, 'userId' => 5],
['id' => 3, 'userId' => 6],
];
$userId = 5;
echo array_count_values(array_column($list, 'userId'))[$userId]; // outputs: 2
使用array_count_values()
函数。查看此链接http://php.net/manual/zh/function.array-count-values.php
define( 'SEARCH_STRING', 'Ben' );
$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$count = count(array_filter($myArray,function($value){return SEARCH_STRING === $value;}));
echo $count, "\n";
输出:
3
尝试使用 array_count_values() 函数。
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
输出:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
function countSame($array) {
$count = count($array);
$storeArray = array();
while ($count > 0) {
$count--;
if ($array[$count]) {
$a = $array[$count];
$counts = array_count_values($array);
$counts = $counts[$a];
$tempArray = array($a, $counts);
array_push($storeArray, $tempArray);
$keys = array_keys($array, $a);
foreach ($keys as $k) {
unset($array[$k]);
} //end of foreach ($keys as $k)
} //end of if ($array[$count])
} //end of while ($count > 0)
return $storeArray;
} //end of function countSame($array)
array_count_values
只适用于整数和字符串。如果您需要浮点数/数值的计数(并且您不关心精度或表示中的小差异),可以使用以下方法:
function arrayCountValues($arr) {
$vals = [];
foreach ($arr as $val) { array_push($vals,strval($val)); }
$cnts = array_count_values($vals);
arsort($cnts);
return $cnts;
}
$cnts
。重新转换它们很容易,但我正在尝试确定值的模式,因此只需要重新转换第一个(几个)值。array_count_values
,结果效率更高(可能高出8-10%)!
注意:未定义的索引
。 - Elyor