manuwhat / avc
avc - 扩展PHP的array_count_values原生函数,用于计算可迭代变量中任何PHP类型值
dev-master
2019-05-15 11:59 UTC
Requires (Dev)
- phpunit/phpunit: ^6.5.0
This package is auto-updated.
Last update: 2024-09-16 00:09:29 UTC
README
扩展PHP的array_count_values原生函数,用于计算可迭代变量中任何PHP类型值
要求: PHP 5.3+
为什么使用这个而不是原生PHP的array_count_values函数?
通常你会这样使用它
- 你需要计算数组以及迭代器、生成器中的值。
- 你想要计算除了整数和字符串之外的其他类型值。
如何使用它
通过以下命令安装库
composer require manuwhat/avc
将 require 'vendor/autoload.php'; 添加到脚本顶部。
require 'AVC.php';//require helpers file var_dump(count_values(array_merge(range(0, 5), array(array()), array(array()), array(array(6))))); /* output array(8) { [0]=> array(2) { [0]=> int(0) [1]=> int(1) } [1]=> array(2) { [0]=> int(1) [1]=> int(1) } [2]=> array(2) { [0]=> int(2) [1]=> int(1) } [3]=> array(2) { [0]=> int(3) [1]=> int(1) } [4]=> array(2) { [0]=> int(4) [1]=> int(1) } [5]=> array(2) { [0]=> int(5) [1]=> int(1) } [6]=> array(2) { [0]=> array(0) { } [1]=> int(2) } [7]=> array(2) { [0]=> array(1) { [0]=> int(6) } [1]=> int(1) } } */
如你所见,结果是多维数组,这很好,但不是很方便。所以这个包提供了一个迭代器来轻松处理结果。可以这样使用它
require 'AVC.php';//require helpers file $x=count_values(array_merge(range(0, 5), array(array()), array(array()), array(array(6))),true); foreach ($x as $value=>$count){ if(is_array($value)||is_object($value)){ var_dump($value); }elseif(is_resource($value)){ var_dump(stream_get_meta_data ($value)); }else{ echo "$value=>$count<br>"; } }
当处理的变量不包含除整数或字符串之外的其他类型时,函数返回与原生array_count_values函数相同的输出,除非已要求迭代器。
请注意,当处理的变量包含除整数和字符串之外的其他类型,并且已要求迭代器作为结果时,你可以使用数组访问语法来访问计数。例如
require 'AVC.php';//require helpers file $x=count_values(array_merge(range(0, 5), array(array()), array(array()), array(array(6))),true); echo $x[array()]; /* output: 2 */
AVC.php文件中提供了3个辅助函数
count_values,value_count,count_diff_values
运行单元测试
phpunit ./tests