zoukankan      html  css  js  c++  java
  • PHP实现同array_column一样的功能

    不用PHP自带的array_column函数实现同样的功能

    <?php
    /**
     * Created by PhpStorm.
     * User: 123456
     * Date: 2018/9/25
     * Time: 19:39
     */
    
    $records = array(
        array(
            'id' => 2135,
            'first_name' => 'John',
            'last_name' => 'Doe',
        ),
        array(
            'id' => 3245,
            'first_name' => 'Sally',
            'last_name' => 'Smith',
        ),
        array(
            'id' => 5342,
            'first_name' => 'Jane',
            'last_name' => 'Jones',
        ),
        array(
            'id' => 5623,
            'first_name' => 'Peter',
            'last_name' => 'Doe',
        )
    );
    
    p(array_column2($records,null,'id'));
    
    /**
     * 模仿array_column函数1
     * @param $arr
     * @param $column
     * @param NULL $index_key
     */
    function array_column2($arr,$column,$index_key=NULL){
        if ($column && !$index_key){
            foreach ($arr as $key=>$val){
                $data[] = $val[$column];
            }
        }
        if ($index_key){
            foreach ($arr as $key=>$val){
                $data[$val[$index_key]] = $column ? $val[$column] : $val;
            }
        }
        return $data;
    }
    
    
    p(array_column3($records,null,'id'));
    
    /**
     * 模仿array_column函数2
     * @param $arr
     * @param $column_key
     * @param null $index_key
     */
    function array_column3($arr,$column_key,$index_key=null){
        $data = array_map(function($d) use ($column_key,$index_key){
    //        p($d);
            if ($column_key && ! $index_key){
                return $d[$column_key];
            }
            if ($index_key){
                return [$d[$index_key]=>($column_key === null) ? $d : $d[$column_key]];
            }
    
        },$arr);
        $tmp=[];
        if ($index_key){
            foreach ($data as $key=>$val){
                $tmp[key($val)] = current($val);
            }
            $data = $tmp;
        }
        return $data;
    }
    
    function p($data){
        echo '<pre>';
        print_r($data);
        echo '</pre>';
    }
  • 相关阅读:
    Ubuntu下的解压缩
    Android开机动画
    Android 5.0源码编译问题
    ubuntu学习的简单笔记
    全局变量:global与$GLOBALS的区别和使用
    Java语言中的面向对象特性总结
    c/c++常见面试题
    查数据库中的表,了解大体结构
    PHP数组详解
    HTML5新增及移除的元素
  • 原文地址:https://www.cnblogs.com/phproom/p/9708502.html
Copyright © 2011-2022 走看看