php之array_column 的使用
听说只有大牛级的高工才知道的函数array_column ()
讲真,我才知道。
(PHP 5 >= 5.5.0, PHP 7)
array_column — 返回数组中指定的一列
说明
array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
参数
input
  需要取出数组列的多维数组(或结果集)
- column_key
-   需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)
- index_key
作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
返回值
从多维数组中返回单列数组
根据说明,我们可以写出两个demo
1.首先,我们定义二维数组
$arr = array(
        array(
                'id' => 1,
                'name' => 'A',
                'age' => 11,
        ),
        array(
                'id' => 2,
                'name' => 'B',
                'age' => 12,
        ),
        array(
                'id' => 3,
                'name' => 'C',
                'age' => 13,
        ),
        array(
                'id' => 4,
                'name' => 'D',
                'age' => 14,
        )
);  
2.demo1
print_r(array_column($arr,"name")); //Array ( [0] => A [1] => B [2] => C [3] => D )
3.demo2
print_r(array_column($arr,"age","name")); //Array ( [A] => 11 [B] => 12 [C] => 13 [D] => 14 )
封装
这个函数是php5.5才支持,小于5.5的,可以封装一个
/**
 * 返回数组中指定的一列
 * @param $input            需要取出数组列的多维数组(或结果集)
 * @param $columnKey        需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)
 * @param null $indexKey    作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
 * @return array            返回值
 */
function _array_column($input, $columnKey, $indexKey = null)
{
    if (!function_exists('array_column')) {
        $columnKeyIsNumber = (is_numeric($columnKey)) ? true : false;
        $indexKeyIsNull = (is_null($indexKey)) ? true : false;
        $indexKeyIsNumber = (is_numeric($indexKey)) ? true : false;
        $result = array();
        foreach ((array)$input as $key => $row) {
            if ($columnKeyIsNumber) {
                $tmp = array_slice($row, $columnKey, 1);
                $tmp = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null;
            } else {
                $tmp = isset($row[$columnKey]) ? $row[$columnKey] : null;
            }
            if (!$indexKeyIsNull) {
                if ($indexKeyIsNumber) {
                    $key = array_slice($row, $indexKey, 1);
                    $key = (is_array($key) && !empty($key)) ? current($key) : null;
                    $key = is_null($key) ? 0 : $key;
                } else {
                    $key = isset($row[$indexKey]) ? $row[$indexKey] : 0;
                }
            }
            $result[$key] = $tmp;
        }
        return $result;
    } else {
        return array_column($input, $columnKey, $indexKey);
    }
}
php之array_column 的使用的更多相关文章
- PHP获取二维数组中的指定若干列【同array_column】
		PHP5.3以上 用到了array_map 使用匿名函数进行处理 代码: <?php function array_col($arr = array(), $idx = 0, $newidx ... 
- php数组函数分析--array_column
		array_column 官方地址:array_column array_column 只能在 PHP版本5.5以上的运行,5.3是不支持这个函数的.如果5.3使用会报: Fatal error: C ... 
- array_map与array_column之间的关系
		/*|----------------------------------------------------------|array_map();将回调函数作用到给定数组的单元上|array_col ... 
- array_map()与array_shift()搭配使用   PK  array_column()函数
		array_map()与arra_shift()搭配使用,还是来看例子吧,比较直观一点 <?php $user = array( 0 => array( 'name' => '张三' ... 
- [PHP]array_map与array_column之间的关系
		---------------------------------------------------------------------------------------------------- ... 
- PHP array_column() 函数
		定义和用法 array_column() 返回输入数组中某个单一列的值. array_column(array,column_key,index_key); 参数 描述 array 必需.规定要使用的 ... 
- php5.5新函数array_column
		php5.5新增了一个新的数组函数,感觉挺使用的,低版本的实现按照如下实现 if(!function_exists('array_column')){ function array_column($i ... 
- array_column php 函数
		今天想从二维数组中取某个列成一维数组 结果发现 array_column需要php5.5支持才行 然后自己写了一个仿造版本的array_column 两种思路 1.直接遍历 取值给追加数组 返回 2. ... 
- array_column php 函数 自定义版本 php_version<5.5
		<?php if(!function_exists('array_column')) { /* * array_column() for PHP 5.4 and lower versions * ... 
- 为什么解析 array_column不可用,
		不久前,自己在一个小项目,我要拿出每个元素的一维数组key的值,一维阵列的形成,突然想到php 有一种功能,实现. $array = array ( array ( "id" =& ... 
随机推荐
- add two numbers(将两个链表相加)
			You are given two non-empty linked lists representing two non-negative integers. The digits are stor ... 
- 远离压力,提高效率——Getting things done读书笔记
			一.确定时间.空间和工具 二.收集阶段:填充工作篮 1. 这有助于你认识到自己面对的工用量. 2. 同时让你清楚"隧道的终点"在哪 ... 
- java设计模式--单列模式
			java设计模式--单列模式 单列模式定义:确保一个类只有一个实例,并提供一个全局访问点. 下面是几种实现单列模式的Demo,每个Demo都有自己的优缺点: Demo1: /** * 单列模式需要满足 ... 
- JDK内置工具之一——JMap(java memory map)
			1.介绍 打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量). 可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.使用方法 j ... 
- saltstack安装部署以及简单实用
			一,saltstack简介: SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位. SaltSta ... 
- Viavdo&ISE&Quartus II级联Modelsim级联仿真
			博主一直致力寻找高效的工作方式,所以一直喜欢折腾软件,从刚开始只用软件IDE自带的编辑器,到Notepad++,再到后来的Vim,从用ISE14.7自带的Isim仿真,到发现更好的Modelsim,再 ... 
- Day18   Django的深入使用
			在向某一个数据库中插入表的时候,应该在项目下面的models里边写入: class book(models,Model): #book代指的是表名 id=models.AutoField(primar ... 
- Day15   Javascipt内容补充
			JavaScript函数: 函数: function 函数名(a,b,c){ 执行代码 } 1,如何去找到标签 Dom直接选择器: 1,找到标签 #获取单个元素 document.getElement ... 
- Microsoft源代码注释语言(SAL)提供设置批注
			Microsoft源代码注释语言(SAL)提供设置批注可以使用描述的功能如何使用其参数,它对其假设并确保它使其在完成. 批注可标头文件 <sal.h>定义. Visual Studio C ... 
- OSG嵌入QT(QT界面使用Qt Designer编辑)
			本文主要内容:使用Qt Designer编辑好QT界面后,将OSG中的ViewerWidget嵌入到QT的Widget中. 在VS中嵌入QT工具,建立QT GUIApplication后,打开自动生成 ... 
