dtkahl/php-array-tools

3.1.1 2017-09-26 12:09 UTC

README

Latest Stable Version License Build Status

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()

移除重复条目。返回集合实例。