zoukankan      html  css  js  c++  java
  • array_map与array_column之间的关系

    /*
    |----------------------------------------------------------
    |array_map();将回调函数作用到给定数组的单元上
    |array_column();快速实现:将二维数组转为一维数组
    |----------------------------------------------------------
    */

    例一:
    $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',
        )
    );
     
    $first_names = array_column($records, 'first_name');
    print_r($first_names);
    /*
    输出:
    Array
    (
        [0] => John
        [1] => Sally
        [2] => Jane
        [3] => Peter
    )
    */
    例二:
    $last_names = array_column($records, 'last_name', 'id');
    print_r($last_names);
    /*
    输出:
    Array
    (
        [2135] => Doe
        [3245] => Smith
        [5342] => Jones
        [5623] => Doe
    )
    */
    当没有array_column()函数情况下,
    
    //使用array_map()实现例一:
    $a = array_map(function($element){  //$records作为参数传入回调函数
      return $element['last_name'];   //返回数组元素值的last_name对应值
    }, $records);              //array_map返回数组,相当于把每个$element['last_name']存入新数组,所以是新建的索引
    //使用foreach实现例一:
    foreach($records as $v)
    {
        $b[] = $v['last_name'];
    }
    //使用foreach实现例二:
    $c = array();
    foreach($records as $k=>$v)
    {
     $c += array($v['id']=>$v['last_name']); //使用+运算符, 以追加的形式(不改变原数组索引), 合并组装的数组
    }                         //若使用array_merge,数字键名将被重新编号

    在取出的多条数据中,典型的二维数组,如果需要使用数据中单一的 值与值 对应的情况,array_column()即可完成,但是面对较复杂的数组结构,foreach才能让你更灵活,不过优先使用系统函数总是首选的。

    Link: http://www.cnblogs.com/farwish/p/3855831.html

  • 相关阅读:
    zoj 3627#模拟#枚举
    Codeforces 432D Prefixes and Suffixes kmp
    hdu 4778 Gems Fight! 状压dp
    CodeForces 379D 暴力 枚举
    HDU 4022 stl multiset
    手动转一下田神的2048
    【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
    poj 3254 状压dp
    C++中运算符的优先级
    内存中的数据对齐
  • 原文地址:https://www.cnblogs.com/heyijing/p/4730592.html
Copyright © 2011-2022 走看看