PHP - 计算特定的数组值

Ivo*_*San 40 php arrays count

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

$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
Run Code Online (Sandbox Code Playgroud)

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

Raj*_*hal 100

$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];
Run Code Online (Sandbox Code Playgroud)

  • @OkiErieRinaldi然后OP需要更新问题. (11认同)
  • 如果数组是多维的呢? (10认同)
  • 如果你计算不在数组中的元素,它将显示`Notice:Undefined index` (5认同)
  • @OkiErieRinaldi:我在google上找到的第一个SO结果:[计算多维数组中的特定值](http://stackoverflow.com/questions/11558397/count-specific-values-in-multidimensional-array/11558780) - 看看是否适用于多维度. (2认同)

Oli*_* A. 16

您可以使用array_keyscount来执行此操作.

$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));
Run Code Online (Sandbox Code Playgroud)

输出:

3
Run Code Online (Sandbox Code Playgroud)

  • 我测试了这段代码与@Rajat Singhal发布的代码.[PHP-沙盒(http://sandbox.onlinephpfunctions.com/code/aee8e6a978c45a3369fd60984ad4da3244812bfe).在PHP 7中,`count(array_keys())`解决方案总是更快.在PHP 5.6中,对于具有较少不同元素的数组,`array_count_values()`版本更快.总而言之,这两个函数都非常快(至少对于我测试的数组而言) (3认同)
  • 这是最好的答案,因为它不会打扰 php 计算所有值的所有出现次数,它只返回符合条件的键并以永远不会抛出“通知”的方式计算它们。换句话说,`echo count(array_keys($array, "purple"));` 打印 `0` 而没有 `Notice` 与 `array_count_values()` 相比,这是一种更好/更简洁的方法。+1 (2认同)
  • IMO 这也是最好的答案,因为它适用于包含字符串和整数以外的值的数组,而“array_count_values()”会抱怨它。+1 (2认同)

Vis*_*ahu 15

要计算二维数组中的值,这里是处理和获取特定值计数的有用片段-

    <?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
    
Run Code Online (Sandbox Code Playgroud)


Rik*_*esh 6

使用array_count_values函数.

$ countValues = array_count_values($ myArray);

echo $countValues["Ben"];


swa*_*esh 5

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


小智 5

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";
Run Code Online (Sandbox Code Playgroud)

输出:

3
Run Code Online (Sandbox Code Playgroud)