Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-计数特定数组值_Php_Arrays_Count - Fatal编程技术网

PHP-计数特定数组值

PHP-计数特定数组值,php,arrays,count,Php,Arrays,Count,如何计算值等于常量的数组中的元素数? 例如 我怎样才能直接知道里面有多少个“本”?使用数组\u计数\u值()函数。检查此链接尝试使用array\u count\u values()函数 使用该功能 $countValues=array\u count\u value($myArray) echo$countValues[“Ben”]尝试PHP函数。您可以使用数组键和计数来完成此操作 输出: 3 3 如果要对数组中的所有相同事件进行计数,请使用以下函数对所有事件进行计数,并将结果作为多维数组返

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


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

使用
数组\u计数\u值()
函数。检查此链接

尝试使用array\u count\u values()函数

使用该功能

$countValues=array\u count\u value($myArray)

echo$countValues[“Ben”]

尝试PHP函数。

您可以使用数组键和计数来完成此操作

输出:

3
3

如果要对数组中的所有相同事件进行计数,请使用以下函数对所有事件进行计数,并将结果作为多维数组返回:

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)
输出:

3
3

array\u count\u值
仅适用于整数和字符串。如果您碰巧需要浮点/数值的计数(并且您忽略了精度或表示形式的微小变化),则此方法有效:

function arrayCountValues($arr) {
  $vals = [];
  foreach ($arr as $val) { array_push($vals,strval($val)); }
  $cnts = array_count_values($vals);
  arsort($cnts);
  return $cnts;
}
请注意,我返回键为字符串的
$cnts
。重新转换它们很容易,但我正在尝试确定值的模式,因此我只需要重新转换第一个(几个)值


我测试了一个循环的版本,创建了一个计数数组,而不是使用
array\u count\u value
,结果证明这更有效(大约8-10%)

要对二维数组中的值进行计数,下面是一个有用的片段,用于处理和获取特定值的计数-


我知道,但它没有给出我想要的,它返回所有相同的element@ivory-santos你确定这个方法没有帮助吗???检查这个链接@ivory santos这不是你真正想要的吗?不是真的:)我得到了答案,我不知道最近在数完之后可以数到['Ben'。thanks@ivory-桑托斯一切都好:)它发生了(至少从我的编程经验来看..哈哈)如果数组是多维的怎么办?@Okierinaldi,那么OP需要更新问题。@James,你能给我一个参考吗?@Okierinaldi:首先,我在google上找到的结果:-看看这是否适用于多维。如果你计算数组中不存在的元素,它将显示
Notice:Undefined index
这是最好的答案,因为php不需要计算所有值的所有出现次数,它只返回符合条件的键,并以一种永远不会抛出
通知的方式对它们进行计数。换句话说,
echo计数(数组_键($array,“purple”)
打印
0
,无需
注意
数组计数值()相比,这是一种更好/更干净的方法。
+1我测试了该代码与Rajat Singhal发布的代码。在PHP7中,
计数(array_keys())
解决方案总是更快。在PHP5.6中,
array\u count\u values()
版本对于不同元素较少的数组速度更快。总之,这两个函数都非常快(至少对于我正在测试的数组来说),这也是最好的答案,因为它适用于包含字符串和整数以外的值的数组,而
array\u count\u values()+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)
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
function arrayCountValues($arr) {
  $vals = [];
  foreach ($arr as $val) { array_push($vals,strval($val)); }
  $cnts = array_count_values($vals);
  arsort($cnts);
  return $cnts;
}