PHP - 计算特定的数组值

时间:2012-07-25 08:55:10

标签: php arrays count

如何计算数组中元素的数量,其值等于常量? 例如,

$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");

我怎么能直接知道里面有多少“本”?

10 个答案:

答案 0 :(得分:91)

$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];

答案 1 :(得分:12)

您可以使用 array_keys count 执行此操作。

$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));

输出:

3

答案 2 :(得分:6)

使用array_count_values功能。

$ countValues = array_count_values($ myArray);

echo $countValues["Ben"];

答案 3 :(得分:5)

使用array_count_values()功能。请检查此链接http://php.net/manual/en/function.array-count-values.php

答案 4 :(得分:2)

尝试使用array_count_values()函数

<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>

输出:

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

http://php.net/manual/en/function.array-count-values.php

答案 5 :(得分:2)

在二维数组的情况下,从PHP Official Page注释中,我找到了有用的代码段用于二维数组-

<?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
?>

答案 6 :(得分:0)

尝试使用PHP函数array_count_values

答案 7 :(得分:0)

如果你想计算数组中所有相同的出现次数,这里有一个计算它们的函数,并将结果作为多维数组返回:

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)

答案 8 :(得分:0)

3

输出:

<form method="post" action="">
   <input type="text" name="names[]">
   <input type="text" name="names[]">
   <input type="text" name="names[]">
   <input type="submit" name="submit">
</form>

答案 9 :(得分:0)

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%)!