PHP 获取二维数组中某个key的集合

对于二维数组的操作问题,一般的做法是直接foreach,一个个的往一个数组变量里塞进行赋值,这种非常常见的做法,但这样的写法很影响性能,因为使用 PHP 原生的函数肯定比循环效率高。下面介绍如何使用原生的函数实现此需求。

事例数组

$arr = array(  
    0 => array(  
        'id'    => 11,  
        'name'  => 'username1',  
        'code' => '123456789',  
    ),  
    1 => array(  
        'id'    => 22,  
        'name'  => 'username2',  
        'code' => '123456789',
    ),  
    2 => array(  
        'id'    => 33,  
        'name'  => 'username3',  
        'code' => '123456789',
    ) 
);

1)获取索引”id”的集合,并且保存为 array(11,22,33)

原始写法:

foreach ($arr as $key => $value)
{
    $list[] = $value['id'];
}

优化后:

$list = array();  
$list = array_map('array_shift', $arr);  


//php 版本要求,(PHP 5 >= 5.5.0)
$list = array();  
$list = array_column($arr, 'id');  

2)获取索引”name”的集合,并且保存为 array(‘username1’,’username2’,’username3’)

原始写法:

foreach ($arr as $key => $value)
{
    $list[] = $value['name'];
}

优化后:

$list = array();  
$list = array_reduce($arr, create_function('$v,$w', '$v[$w["id"]]=$w["name"];return $v;'));  

打印结果:

array(  
    11 => 'username1',  
    22 => 'username2',  
    33 => 'username3',  
);

3)在每个数组元素里面添加一个元素,或者重新赋值

原始写法:

foreach ($arr as $key => $value)
{
    $arr[$key]['add_element'] = 1;
}

优化后:

array_walk($arr,function(&$item,$key){$item['add_element'] = 1;});

打印结果:

$arr = array(  
    0 => array(  
        'id'    => 11,  
        'name'  => 'username1',  
        'code' => '123456789',
        'add_element'=>1
    ),  
    1 => array(  
        'id'    => 22,  
        'name'  => 'username2',  
        'code' => '123456789',
        'add_element'=>1
    ),  
    2 => array(  
        'id'    => 33,  
        'name'  => 'username3',  
        'code' => '123456789',
        'add_element'=>1
    ) 
);
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值