- 广场
-
- 搜索中...
- 本文档内搜索
zxf/tools 使用手册
集合操作Collection
引入
use zxf\Tools\Collection;
API
初始化数据
// 示例使用
$data = new Collection([
['id' => 1, 'name' => 'Alice', 'age' => 20],
['id' => 2, 'name' => 'Bob', 'age' => 21],
['id' => 3, 'name' => 'Charlie', 'age' => 19],
['id' => 4, 'name' => 'David'],
['id' => 5, 'name' => ''],
]);
转换为数组
$data->toArray();
转换为带缩进格式的JSON字符串
$data->toJson();
普通JSON字符串
echo $data;
或者
$data->toString();
统计元素个数
$data->count();
多维度数组遍历
$data = new Collection([
[
'a'=>['id' => 1, 'name' => 'Alice'],
'b'=>['id' => 2, 'name' => 'Bob'],
],
[
'c'=>['id' => 3, 'name' => 'Charlie'],
'd'=>['id' => 4, 'name' => 'David'],
]
]);
foreach ($data as $item) {
foreach ($item as $value) {
var_dump($value->id); // 对象的属性访问
var_dump($value['name']); // 键值访问
var_dump($value->toArray()); // 转换为数组
}
}
访问某个元素
$data['0']->id;
$data['0']['name'];
查找数据
$data->get('0.name');
$data->get('0')->name;
$data->get('0')->toArray();
判断数据是否为空
$data->isEmpty();
$data->isNotEmpty();
where查询
$data->where('id', 3);
$data->where('id','=', 1);
$data->where([
['id', '>', 1],
['name', '=', 'Bob'],
]);
$data->where('name', function ($value,$index) {
// 闭包操作每一个name 的值
});
like 查询
$data->where('name', 'like', 'A%');
$data->whereIn('id', [2, 4]);
$data->whereNull('name');
$data->whereNotNull('name');
$data->whereBetween('id', [2, 3]);
获取数组的维度/深度
Collection::getArrayDimension($data);
添加元素
$data->add(['id' => 7, 'name' => 'DSffdf']);
var_dump($data->toArray());
移除指定的元素
$data->remove(['name' => 'Alice'])->toArray();
合并多个数组
$multiDimensionalArray = [
['id' => 1, 'name' => 'AliceX'],
['id' => 2, 'name' => 'Bob'],
];
var_dump($data->merge($multiDimensionalArray)->toArray());
排序
// 升序排序
var_dump($data->sortBy('id')->toArray());
// 降序排序
var_dump($data->sortBy('id', SORT_DESC)->toArray());
var_dump($data->sortByDesc('id')->toArray());
去重
var_dump($data->unique()->toArray());
遍历
$data->map(function ($value, $key){
var_dump($value, $key);die;
});
$data->each(function ($value, $key){
var_dump($value, $key);die;
});
取部分字段
var_dump($data->pluck('name')->toArray());
var_dump($data->pluck('age','name')->toArray());
分块读取
$data->chunk(3, function ($items, $index) {
var_dump($items->first()->toArray(), $index);
});
返回集合中的一部分元素
var_dump($data->slice(1,1)->toArray());
//返回集合中的第一个元素
var_dump($data->first()->toArray());
//返回集合中的最后一个元素
var_dump($data->last()->toArray());
分组
var_dump($data->groupBy('age')->toArray());
avg
// 求平均值
var_dump($data->avg('age'));
sum
// 求和
var_dump($data->sum('age'));
max
// 求最大值
var_dump($data->max('age'));
min
// 求最小值
var_dump($data->min('age'));
随机打乱
var_dump($data->shuffle()->toArray());
集合求差集
$multiDimensionalArray = [
['id' => 1, 'name' => 'Alice', 'age' => 20],
['id' => 6, 'name' => 'Bob'],
];
// 集合求差
var_dump($data->diff($multiDimensionalArray)->toArray());
根据指定的比较函数找出两个集合的交集
var_dump($data->intersect($multiDimensionalArray)->toArray());
多个数组或集合合并
var_dump($data->merge($multiDimensionalArray, $data)->toArray());
将集合的元素连接成字符串
var_dump($data->join('-'));
根据指定键或闭包对集合元素进行分组统计
var_dump($data->countBy('age'));
返回集合中所有键的集合
var_dump($data->keys()->toArray());
返回集合中所有值的集合
var_dump($data->values()->toArray());
随机抽取集合中的一个或多个样本
var_dump($data->sample(2)->toArray());
在集合的开始或结束处填充指定数量个指定值
var_dump($data->pad(1, ['id' => 1, 'name' => 'Alicexxxx', 'age' => 20])->toArray());
var_dump($data->pad(1, ['id' => 1, 'name' => 'Alicexxxx', 'age' => 20], 'end')->toArray());