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

php array_column函数封装

Z先生4年前 (2020-10-08)后端732

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

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

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

Composer常见故障处理

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

thinkphp6批量软删除

关于thinkphp软删除的理解软删除核心逻辑数据库设置软删除字段,并将类型定义为int(10)软删除核心代码    // 自动时间戳类型未int...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。