avc - 扩展PHP的array_count_values原生函数,用于计算可迭代变量中任何PHP类型值

dev-master 2019-05-15 11:59 UTC

This package is auto-updated.

Last update: 2024-09-16 00:09:29 UTC


README

Build Status Scrutinizer Code Quality Build Status Code Intelligence Status

扩展PHP的array_count_values原生函数,用于计算可迭代变量中任何PHP类型值

要求: PHP 5.3+

为什么使用这个而不是原生PHP的array_count_values函数?

通常你会这样使用它

  1. 你需要计算数组以及迭代器、生成器中的值。
  2. 你想要计算除了整数和字符串之外的其他类型值。

如何使用它

通过以下命令安装库

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