array_reduce() 用法

Jackey PHP 3,300 次浏览 , 没有评论

定义和用法
array_reduce() 函数向用户自定义函数发送数组中的值,并返回一个字符串。

注释:如果数组是空的且未传递 initial 参数,该函数返回 NULL。

说明
array_reduce() 函数用回调函数迭代地将数组简化为单一的值。

如果指定第三个参数,则该参数将被当成是数组中的第一个值来处理,或者如果数组为空的话就作为最终返回值。

array转字符串:

从数据库中查询出一组数据,接下来想得到他们的 id 值,拼接成类似 (1,2,3,4,5) 字符串,然后在 “SELECT * WHERE id in
(1,2,3,4,5) ” 处理,这时候完全可以 foreach() 数组处理,其实也可以使用 array_reduce(),因为 array_reduce()就是“迭代地将数组简化为单一的值”,如下:

  1. $arr = array(
  2. array('id'=>1,'name'=>'a'),
  3. array('id'=>2,'name'=>'c'),
  4. array('id'=>3,'name'=>'d')
  5. );
  6. $res = array_reduce($arr , function($result , $v){
  7. return empty($result) ? $v['id'] : $result . ',' . $v['id'];
  8. });
  9. echo $res;

array 二维转一维

  1. $user = array(
  2. '0' => array('id' => 100, 'username' => 'a1'),
  3. '1' => array('id' => 101, 'username' => 'a2'),
  4. '2' => array('id' => 102, 'username' => 'a3'),
  5. '3' => array('id' => 103, 'username' => 'a4'),
  6. '4' => array('id' => 104, 'username' => 'a5'),
  7. );
  8. $result = array_reduce($user, function ($result, $value) {
  9. $result[] = $value['id'];
  10. return $result;
  11. }, array());
  12. print_r($result);

输出结果:

  1. (
  2. [0] => 100
  3. [1] => 101
  4. [2] => 102
  5. [3] => 103
  6. [4] => 104
  7. )
  1. $user = array(
  2. '0' => array('id' => 100, 'username' => 'a1'),
  3. '1' => array('id' => 101, 'username' => 'a2'),
  4. '2' => array('id' => 102, 'username' => 'a3'),
  5. '3' => array('id' => 103, 'username' => 'a4'),
  6. '4' => array('id' => 104, 'username' => 'a5'),
  7. );
  8. $result = array_reduce($user, function ($result, $value) {
  9. return array_merge($result, array_values($value));
  10. }, array());
  11. print_r($result);

输出结果:

  1. (
  2. [0] => 100
  3. [1] => a1
  4. [2] => 101
  5. [3] => a2
  6. [4] => 102
  7. [5] => a3
  8. [6] => 103
  9. [7] => a4
  10. [8] => 104
  11. [9] => a5
  12. )

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Go