1. 给数组栈头压入新元素
array_unshift(目标数组, 新元素(可以是数组));
2. 【laravel】数组分页
collect -> forPage
$collect = collect($data['detail']);
$data['total'] = $collect->count(); //获取总条数
$data['detail'] = $collect->forPage($request->page ?? 1, $request->limit ?? 10);
第一页的key从0开始算,第二页开始不是了。虽然数组被分割成几块,但是key没变的。这样对于输出给前端使用会有问题,因为如果数组序号不是从0开始的,对于前端来说就是对象了而不是数组。
3. 【laravel】把键重置为连续编号的索引
collect -> values ``php $data[‘detail’] = $data[‘detail’]->values();
打印出来的$data['detail']是collect对象来的,要变成PHP纯数组,就用->all(),或者->toArray()
4. 【laravel】将给定的数组或集合值追加到集合的末尾
concat
方法 https://learnku.com/docs/laravel/5.8/collections/3916#method-concat
5. 将二维数组每个值后面追加一个字段
array_walk(array,myfunction,parameter…)
$add = ['str'=>1];
$arr = [
['id'=>1, 'name'=>'aaa'],
['id'=>2, 'name'=>'bbb'],
];
array_walk($arr, function(&$value, $k, $add) {
$value = array_merge($value, $add);
}, $add);
dd($arr);
6. 数组指定元素作为键和值
//测试数据
$data = [ ['sn' => 'sn001', 'name' => 'zhangsan', 'age' => '24'], ['sn' => 'sn002', 'name' => 'lisi', 'age' => '25'], ['sn' => 'sn003', 'name' => 'wangwu', 'age' => '26'], ];
php实现:
//指定元素作为键
$key = array_column($data, 'sn');
$keyBy = array_combine($key, $data);
//指定元素作为键和值(比如:指定sn为键,name为值)
$key = array_column($data, 'sn');
$value = array_column($data, 'name');
$pluck = array_combine($key, $value);
//或者这样写:
//以value字段为键名
$tempArr = array_column($arr, null, 'value');
laravel实现:
```php
//指定数组元素作为键名
$collection = collect($data);
$keyBy = $collection->keyBy('sn');
//指定元素作为键和值(比如:指定sn为键,name为值)
$pluck = $collection->pluck('name', 'sn');
7. 合并数组并保留键值
使用 “+” 运算符合并数组,可以保留数组的键值,如果合并的数组中含有相同的键值,后面的不会覆盖前面的键值(前面的优先)
<?php
$form_data1 = array(11=>'A',12=>'B',13=>'C',14=>'D');
$form_data2 = array(25=>'B',26=>'A',27=>'D',28=>'C');
$result = $form_data1 + $form_data2;
print_r($result);
?>
输出:
Array ( [11] => A [12] => B [13] => C [14] => D [25] => B [26] => A [27] => D [28] => C )
8.根据二维数组中的某个字段进行排序
<?php
$data = array(
array(
'id' => 5698,
'first_name' => 'Bill',
'last_name' => 'Gates',
),
array(
'id' => 4767,
'first_name' => 'Steve',
'last_name' => 'Aobs',
),
array(
'id' => 3809,
'first_name' => 'Mark',
'last_name' => 'Zuckerberg',
)
);
//根据字段last_name对数组$data进行降序排列
$last_names = array_column($data,'last_name');
array_multisort($last_names,SORT_DESC,$data);
var_dump($data);
?>