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

php array_column函数封装

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

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
        )

)
*/


分享给朋友:

相关文章

PHP年龄计算

通过出生日期,再传入指定日期计算年龄,不传入则计算到今天的时间。        /**  * 计...

php json_decode转换为null的问题解决

在做某一程序的时候,前台组装的json数组,为了能传到后台,使用JSON.stringify将其转换成字符串后后端接收。但是接收后,死活转换不了数组,使用json_last_error()输出错误后,...

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

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

PHP将图片自动缩放成指定大小:autoCropImage,含nginx伪静态

autoCropImage自己一直在用,并且加入了webp格式转换具体说明和介绍如下:autoCropImage - 图片自动缩放程序将图片自动缩放成指定大小,减少图片体积,从而加快下载速度,降低下载...

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

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

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

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

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

发表评论

访客

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