当前位置:首页 > 后端 > 正文内容

php array_column函数封装

Z先生5年前 (2020-10-08)后端794

array_column函数只支持php5.5.0以上版本,所以这里要封装下,这样可以兼容用法

if (!function_exists("array_column")) {
	function array_column($array, $val_col, $key_col) {
		if($key_col==null) {
			return array_map(function ($element) use ($val_col) {
				return $val_col==null?$element:$element[$val_col];
			}
			, $array);
		} else {
			$_array=array();
			foreach ($array as $_key=>$_val) {
				$_array[$_val[$key_col]]=$val_col==null?$_val:$_val[$val_col];
			}
			return $_array;
		}
	}
}

注意事项:

$arr = array(
   array(
       'id' => 1,
       'first_name' => 'John',
       'last_name' => 'Does',
   ),
   array(
       'id' => 2,
       'first_name' => 'Sally',
       'last_name' => 'Smith',
   ),
   array(
       'id' => 3,
       'first_name' => 'Jane',
       'last_name' => 'Jones',
   ),
   array(
       'id' => 4,
       'first_name' => 'Peter',
       'last_name' => 'Doe',
   )
);

print_r(array_column($arr,'first_name'));
//运行结果:
/*
Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)
*/
 
print_r(array_column($arr,'first_name','last_name'));
//运行结果:
/*
Array
(
    [Does] => John
    [Smith] => Sally
    [Jones] => Jane
    [Doe] => Peter
)
*/
  
print_r(array_column($arr, null, 'last_name'));
//运行结果:
/*
Array
(
    [Does] => Array
        (
            [id] => 1
            [first_name] => John
            [last_name] => Does
        )

    [Smith] => Array
        (
            [id] => 2
            [first_name] => Sally
            [last_name] => Smith
        )

    [Jones] => Array
        (
            [id] => 3
            [first_name] => Jane
            [last_name] => Jones
        )

    [Doe] => Array
        (
            [id] => 4
            [first_name] => Peter
            [last_name] => Doe
        )

)
*/


分享给朋友:

相关文章

【转】rtsp视频流实现浏览器h5播放

【转】rtsp视频流实现浏览器h5播放

方案思路:获取摄像头数据流 --> FFmpeg转码 --> Node.js(搭建webSocket服务器) --> 在服务器上运行jsmpeg程序操作步骤首先查看是否能够正常地获取...

php获取文件mime的方法,相对完整,并且已经测试

已经经过测试也相对完整,优先自带类和方法,如果自带类或者方法没有开启的情况下,通过文件扩展名实现,文件扩展名关联了176种如果实在没有开启相关组件也没有匹配到,那么就返回:application/oc...

Composer的初步使用以及Composer切换国内源(阿里云)

Composer安装(Windows系统)下载:https://getcomposer.org/Composer-Setup.exe一步步安装即可。需要注意的是你需要开启 openssl 配置,我们打...

thinkphp6模型中联合主键、中间表调用的写法

前言Thinkphp框架是不错,但是一些特殊用法几乎找不到文档。模型就新手来说感觉会很麻烦,但是实际上习惯之后会很方便,比如入库和出库的自动格式化,再比如安全的入库。而且模型会让你养成良好的开发习惯,...

ThinkPHP6多应用下配置短路由 - TP6路由

ThinkPHP6多应用下配置短路由 - TP6路由

需要实现的效果:http://xx.com/u/RkdJ80 => http://xx.com/home/url/url/index实现步骤1. 设置tp6隐藏网址的index...

Composer常见故障处理

Segmentation fault (core dumped)错误错误详情Composer在自升级和安装包时均报:Segmentation fault (core dumped)错误 检查分析运行...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。
请先 登录 再评论,若不是会员请先 注册