php数组各种操作

Posted by : at

Category : php


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);
?>

About hana
hana

Full Stack Web Developer, China

Email : hanayaku@qq.com

Website : https://hanayaku.github.io/

-->
About hana
Useful Links