php实现快速对二维数组某一列进行组装的方法小结

这篇文章主要介绍了php实现快速对二维数组某一列进行组装的方法,涉及PHP数组遍历、转换、拆分等相关操作技巧,需要的朋友可以参考下。

本文实例总结了php实现快速对二维数组某一列进行组装的方法,分享给大家供大家参考,具体如下:

问题:

比如我二维数组是这样的:

  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. )

如何快速的获取所有id组成的ids字符串,比如$ids='100,101,102,103,104'; 再者如果我有条件的组装,比如id!=103等这样的,除了循环处理外有没有比较方便快速的方法?

解决方法:

  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. /**
  9. * @param array $array 数组
  10. * @param string $k 要获取值的key
  11. * @param array $rm 要去除的数据
  12. * */
  13. function array_get_v($array, $k, $rm)
  14. {
  15. if (!trim($k)) return false;
  16. preg_match_all("/\"$k\":(\d+)/", json_encode($array), $res);
  17. $res = array_diff($res[1],$rm);
  18. return implode(',',$res);
  19. }
  20. print_r(array_get_v($user, 'id',array(101)));

运行结果:

100,102,103,104

补充方法:

例1:

  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. array_walk($user, function($v, $k) use(&$ids){
  9. $ids[$k] = $v['id'];
  10. });
  11. echo implode(',', $ids);

运行结果:

100,101,102,103,104

例2:

  1. <?php
  2. function process($v){
  3. //如果要加限制条件,在这里加入即可
  4. if(isset($v['id']))
  5. return $v['id'];
  6. }
  7. $user = array(
  8. '0' => array('id' => 100, 'username' => 'a1'),
  9. '1' => array('id' => 101, 'username' => 'a2'),
  10. '2' => array('id' => 102, 'username' => 'a3'),
  11. '3' => array('id' => 103, 'username' => 'a4'),
  12. '4' => array('id' => 104, 'username' => 'a5'),
  13. );
  14. $aUser = array_map("process", $user);
  15. echo implode(',', $aUser);

运行结果:

100,101,102,103,104