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

php array_column函数封装

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

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
        )

)
*/


分享给朋友:

相关文章

关于微信表情(emoji表情)入Mysql的解决方案(PHP版)

emoji是4个字节存储,而utf8_general_ci最大支持3字节,解决方案有两个:1、mysql库的由utf8改成utf8mb4;2、使用出入库编码转换,比如:base64编码、urlenco...

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

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

【转】Swoole和Workerman到底选谁?

【转】Swoole和Workerman到底选谁?

Swoole:面向生产环境的 PHP 异步网络通信引擎       使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTT...

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

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

困扰了很久的PHP跨域问题

其实这个问题一直是不存在的,只是自己因为各种配置吧,导致了这个问题一直没有解决。现在就解决思路提供如下: 需要两步操作一、修改Nignx配置文件一般在宝塔面板伪静态中设置示例代码: locatio...

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

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

发表评论

访客

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