dtkahl / php-array-tools
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: 5.2.*
README
PHP数组工具
PHP数组的不同工具。
依赖关系
PHP >= 5.6.0
安装
使用 Composer 安装
composer require dtkahl/php-array-tools
映射类
此类提供对 索引 数组的包装类,并实现了 \ArrayAccess、\Countable 和 \Serializable 接口。
用法
引用命名空间
use Dtkahl\ArrayTools\Map;
创建新的映射
$map = new Map([ 'first_name' => 'Jeffrey', 'last_name' => 'Clarence', 'age' => 24 ]);
可用的选项
recursive-> 创建递归实例(自动从数组值创建映射或集合实例)key_locked-> 只允许在映射中已定义的键。
方法
get($key, $default = null)
通过给定键返回属性值,如果属性不存在则返回 $default。
has($key)
确定具有给定键的属性是否存在于映射中。
set($key, $value)
设置属性(如果存在则覆盖)。返回映射实例。
remove($key)
如果存在则删除属性。返回映射实例。
only()
返回具有给定键的所有项的映射。
except()
返回除给定键外的所有项的映射。
toArray()
返回所有项的数组。
toSerializedArray()
返回序列化的项(如果项是对象且有此方法,则调用 $item->toSerializedArray())作为数组。
toJson()
返回映射中所有项的JSON字符串。
merge(array $data, $prefer_old = false)
将给定的数组(或映射实例)合并到映射数据中。如果 $prefer_old 为 true,则数据将反向合并。返回映射实例。
copy()
返回映射实例的克隆。
clear()
删除映射中的所有项并返回映射实例。
each(\Closure $call)
遍历映射项。
$map->each(function ($key, $value) { // do something });
您可以在闭包中通过 return false 来中断。返回映射实例。
map(\Closure $call)
遍历映射项并使用给定的闭包返回的值覆盖它们的值。
$map->map(function ($key, $value) { return "Mapped " . $value; });
返回集合实例。
集合类
此类提供对 索引 数组的包装类,并实现了 \ArrayAccess、\Countable、\Iterator 和 \Serializable 接口。
可用的选项
recursive-> 创建递归实例(自动从数组值创建映射或集合实例)
用法
引用命名空间
use Dtkahl\ArrayTools\Collection;
创建新的集合
$collection = new Collection([ [ 'first_name' => 'Jeffrey', 'last_name' => 'Clarence', 'age' => 24 ], [ 'first_name' => 'Neil', 'last_name' => 'Hiram', 'age' => 32 ], [ 'first_name' => 'Derek', 'last_name' => 'Deon', 'age' => 19 ], ]);
方法
toArray()
返回集合中所有项的索引数组。
toSerializedArray()
返回序列化的项(如果项是对象且有此方法,则调用 $item->toSerializedArray())作为数组。
toJson()
返回集合中所有项的JSON字符串。
copy()
返回集合实例的克隆。
getKeys()
返回集合项键的数组。
hasKey(int $key)
确定具有给定键的项是否存在于集合中。
isEmpty()
确定集合中是否有项。
getValues()
返回集合项的数组。(实际上与 toArray() 相同,因为集合数据始终是索引数组)
hasValue(int $value)
确定具有给定值的项是否存在于集合中。
count()
返回集合中项的数量。
clear()
从集合中删除所有项。返回集合实例。
get(int $key)
返回具有给定键的集合项。
remove(int $key, bool $do_not_clear = false)
移除具有给定键的集合项。返回集合实例。
each(\Closure $call)
遍历集合项。
$collection->each(function ($item, $key) { // do something });
您可以在闭包中通过return false来中断。返回集合实例。
filter(\Closure $call)
遍历集合项,并仅保留闭包返回true的项。
$collection->filter(function ($item, $key) { return $item['age'] > 10; });
reverse()
反转集合中的项。返回集合实例。
first()
返回第一个集合项。
last()
返回最后一个集合项。
shift()
返回并移除第一个集合项。
unshift(mixed $value)
将一个项推送到集合的开头。返回集合实例。
pop()
返回并移除最后一个集合项。
push(mixed $value)
将一个项推送到集合的末尾。返回集合实例。
put(int $key, mixed $value)
通过键将项放入集合中。(如果存在则覆盖)返回集合实例。
inject(int $key, mixed $value)
通过键将项放入集合中。(如果键大于等于给定键,则将项向上移动一个位置)返回集合实例。
merge(array $array)
将给定的数组(或集合实例)合并到集合数据中。返回集合实例。
sort(\Closure $call)
使用usort对集合项进行排序。
$collection->sort(function ($a, $b) { return $a['age'] > $b['age']; });
返回集合实例。
map(\Closure $call)
遍历集合项,并使用给定闭包的返回值覆盖它们。
$collection->map(function ($item) { return $item['first_name] . " " . $item['last_name]; });
返回集合实例。
slice(int $offset, int|null $length = null)
使用array_slice切片集合数据。返回集合实例。
chunk(int $size)
返回一个包含给定块大小的集合数组的数组。
current(int $size)
返回当前指针位置的项或'null'(如果没有项)。
next(int $size)
将内部指针增加一个并返回该项或'null'(如果当前位置没有项)。
while ($item = $collection->next()) { var_dump($item['age']); echo "<br>"; }
previous(int $size)
将内部指针减少一个并返回该项或'null'(如果当前位置没有项)。
setPointer(int $pointer)
将内部指针位置设置为给定值。
lists(array $keys)
返回包含给定数组条目/公共属性的集合项的数组。
$collection->lists(['age']) // array (array('age'=>24'), array('age'=>32), array('age'=>19))
join(string $glue)
使用给定的$glue连接集合项。
unique()
移除重复条目。返回集合实例。