php中对一维和多维数组操作的一些函数array_walk和array_map
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2017-12-21 18:13:39
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
php中对数组的操作的函数是非常强大而方便的。
array_column()从多维数组中提取一列数据到指定的数组
$datalist = [ [ 'aaa' => '11111111', 'bb' => '444444', ], [ 'aaa' => '22222222', 'bb' => '555555', ], [ 'aaa' => '33333333', 'bb' => '555555', ], ]; $list = array_column($datalist, 'aaa'); var_dump($list);
array_walk遍历一个数组,把键值传入回调函数进行处理,传引用时可修改原数组
返回值为 true/false
下面使用函数对数组进行修改并取出指定键的值到另一个数组中
$datalist = [ [ 'aaa' => '11111111', 'bb' => '444444', ], [ 'aaa' => '22222222', 'bb' => '555555', ], [ 'aaa' => '33333333', 'bb' => '555555', ], ]; $list = []; array_walk($datalist, function ($value, $key) use (&$datalist, &$list) { $datalist[$key]['aaa'] = 'aaaaaaaa'; $list[] = $value['bb']; }); var_dump($datalist); var_dump($list);
匿名函数的两个参数是固定的第一个是数组的值第二个是键,因为匿名函数是一个闭包,不能访问外面的变量所以要加一个use语法把外面的变量引用传进去进行修改赋值,此方法有些笨拙,主要是讲解下use的用法
想直接对原数组进行修改有更方法的方法遍历的时候参数传引用进去就可以啦
$datalist = [ [ 'aaa' => '11111111', 'bb' => '444444', ], [ 'aaa' => '22222222', 'bb' => '555555', ], [ 'aaa' => '33333333', 'bb' => '555555', ], ]; $list = []; array_walk($datalist, function (&$value, &$key) use (&$list) { $value['aaa'] = 'aaaaaaaa'; $list[] = $value['bb']; }); var_dump($datalist); var_dump($list);
array_map遍历数组的值,由回调函数处理后返回一个新值,把新值放在一个数组中返回
$datalist = ['45', '2', '5', '60', '98', '1']; $list = array_map(function ($value) { return $value . '_test'; }, $datalist); var_dump($list); var_dump($datalist);
此函数可以配合use语法实现更强大的功能