rkr / php-array-utils
数组函数库
0.0.1
2014-07-24 12:26 UTC
Requires
- php: >= 5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2024-08-29 04:00:18 UTC
README
数组函数库
$input = ['a' => 0, 'b' => 1, 'c' => 2, 'd' => 3]; arr\join($input); # 0123 arr\join($input, ', '); # 0, 1, 2, 3 arr\intersect($input, [1, 3]); # [b => 1, d => 3] arr\intersect\keys($input, ['a', 'b']); # [a => 0, b => 1] arr\diff($input, [1, 2]); # [a => 0, d => 3] arr\diff\keys($input, ['a', 'c']); # [b => 1, d => 3] arr\filter($input); # [b => 1, c => 2, d => 3] arr\filter($input, function ($val) { return $val !== 1; }); # [a => 0, c => 2, d => 3] arr\filter\keys($input); # [a => 0, b => 1, c => 2, d => 3] arr\filter\keys($input, function ($key) { return $key !== 'b'; }); # [a => 0, c => 2, d => 3] arr\filter\keysAndValues($input, function ($key, $value) { return $value === 0 || $key === 'b'; }); # [a => 0, b => 1] arr\map($input, 'exp'); # [a => 1, b => 2.718281828459, c => 7.3890560989307, d => 20.085536923188] arr\map($input, function ($val) { return $val + 1; }); # [a => 1, b => 2, c => 3, d => 4] arr\map\keys($input, 'strtoupper'); # [A => 0, B => 1, C => 2, D => 3] arr\map\keys($input, function ($key) { return dechex(ord($key)); }); # [61 => 0, 62 => 1, 63 => 2, 64 => 3] arr\map\keysAndValues($input, function (&$key, $value) { list($value, $key) = array($key, $value); return $value; }); # [0 => a, 1 => b, 2 => c, 3 => d] arr\map\func([[255, 128, 0], [128, 255, 0]], 'vsprintf', array('#%02X%02X%02X'), 1); # [0 => #FF8000, 1 => #80FF00]
常见问题解答
嘿,所有酷炫的孩子都在使用面向对象编程。这个库的方向不是在错误的方向吗?
这取决于具体情况或数组使用的程度。在PHP中,数组在不同的场景中经常被用作不同的东西。至少,$_变量是数组。你可以立即将数组包装成ArrayObject,但这样就不能直接使用PHP中内置的许多功能。所以我认为我必须解释每种方法的优缺点。
数组函数的优势
- 你不需要将每个数组都变成对象来应用特定的功能。
- 你仍然可以像使用array_merge()这样的内置PHP函数一样在数组上使用,而不需要进行转换。
- 你可以添加尽可能多的函数。你也可以用ArrayObject的子类来做同样的事情,但最终你将得到一个拥有数十甚至数百个方法的上帝对象(Closure-bindung?)。
- 你可以始终使用数组类型提示,同时直接利用这个库的扩展。
数组函数的缺点
- 每次你将数组作为参数传递给一个函数/方法时,整个数组都会被复制。
- 你可以利用内部状态来帮助跟踪变化或其他信息。