不用PHP自带的array_column函数实现同样的功能

<?php
/**
* Created by PhpStorm.
* User: 123456
* Date: 2018/9/25
* Time: 19:39
*/ $records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
)
); p(array_column2($records,null,'id')); /**
* 模仿array_column函数1
* @param $arr
* @param $column
* @param NULL $index_key
*/
function array_column2($arr,$column,$index_key=NULL){
if ($column && !$index_key){
foreach ($arr as $key=>$val){
$data[] = $val[$column];
}
}
if ($index_key){
foreach ($arr as $key=>$val){
$data[$val[$index_key]] = $column ? $val[$column] : $val;
}
}
return $data;
} p(array_column3($records,null,'id')); /**
* 模仿array_column函数2
* @param $arr
* @param $column_key
* @param null $index_key
*/
function array_column3($arr,$column_key,$index_key=null){
$data = array_map(function($d) use ($column_key,$index_key){
// p($d);
if ($column_key && ! $index_key){
return $d[$column_key];
}
if ($index_key){
return [$d[$index_key]=>($column_key === null) ? $d : $d[$column_key]];
} },$arr);
$tmp=[];
if ($index_key){
foreach ($data as $key=>$val){
$tmp[key($val)] = current($val);
}
$data = $tmp;
}
return $data;
} function p($data){
echo '<pre>';
print_r($data);
echo '</pre>';
}

最新文章

  1. C#/VB.NET 向PowerPoint文档插入视频
  2. SharePoint 2013 扩展查阅项功能
  3. ASP.NET Core--基于授权的视图
  4. 使用pip安装 cx_Oracle 模块
  5. 数据库SQLite
  6. CSS学习目录
  7. iOS-点击推送消息跳转处理
  8. Understanding, Operating and Monitoring Apache Kafka
  9. tar 解压缩命令
  10. 使用&lt;input&gt;标签做了两个按钮, 按钮之间间距如何去掉
  11. trove taskmanger api
  12. 用C++编一程序,先输出一行sun mon tue wed thu fri fri,接着使用右对齐打印出日期,像日历那样
  13. webpack以及loader 加载命令
  14. java 接口1
  15. JavaScript全局变量的本质及页面共享问题
  16. CSS知识点(一)
  17. JVM(上)
  18. Redis客户端使用
  19. Java Http连接中(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)
  20. mysql基础知识详解

热门文章

  1. C 语言实例 - 阶乘
  2. shell学习(9)- du和df区别及详解
  3. vue中声明式导航和编程式导航
  4. Jquery属性操作(入门二)
  5. codevs1026-dp(记忆化搜索)
  6. hdu2027 trie树 字典树模板
  7. Zepto核心模块源代码分析
  8. Java 2 个 List 集合数据求并、补集操作
  9. RHEL/CentOS 7.X 安装笔记
  10. Spring Bean的一生