自己写的兼容低于PHP 5.5版本的array_column()函数


Posted in PHP onOctober 24, 2014

array_column 用于获取二维数组中的元素(PHP 5.5新增函数),但我们有时候需要在低版本的PHP环境中使用…

if( ! function_exists('array_column'))
{
  function array_column($input, $columnKey, $indexKey = NULL)
  {
    $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;
  }
}
PHP 相关文章推荐
PHP define函数的使用说明
Aug 27 PHP
PHP学习之正则表达式
Apr 17 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
PHP设计模式之调解者模式的深入解析
Jun 13 PHP
php中hashtable实现示例分享
Feb 13 PHP
学习php设计模式 php实现原型模式(prototype)
Dec 07 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
tp5框架无刷新分页实现方法分析
Sep 26 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
php生成短网址/短链接原理和用法实例分析
May 29 PHP
PHP中soap的用法实例
Oct 24 #PHP
php中socket的用法详解
Oct 24 #PHP
PHP利用header跳转失效的解决方法
Oct 24 #PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 #PHP
php cookie名使用点号(句号)会被转换
Oct 23 #PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 #PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 #PHP
You might like
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
Python中的yield浅析
2014/06/16 Python
python引用DLL文件的方法
2015/05/11 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
快速查找Python安装路径方法
2020/02/06 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
static函数与普通函数有什么区别
2015/12/25 面试题
Why we need EJB
2016/10/20 面试题
行政主管岗位职责
2013/11/18 职场文书
运动会通讯稿500字
2014/02/20 职场文书
委托书怎么写
2014/07/31 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
三年级学生期末评语
2014/12/26 职场文书
工作态度检讨书范文
2015/05/06 职场文书
2019个人工作总结
2019/06/21 职场文书
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android