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