PHP获取二维数组中的指定若干列【同array_column】

PHP5.3以上  用到了array_map 使用匿名函数进行处理

代码:

<?php
function array_col($arr = array(), $idx = 0, $newidx = 0)
{
    if (function_exists(‘array_column‘) && !is_array($idx) && is_bool(strpos($idx, ‘,‘, 1))) {
        return array_column($arr, $idx, $newidx);
    } else {
        return array_map(function($element) use($idx, $newidx) {
            $ret_arr = array();
            $tmp = !is_array($idx) && is_int(strpos($idx, ‘,‘, 1))?explode(‘,‘, $idx):0;
            $ntmp = !is_array($newidx) && is_int(strpos($newidx, ‘,‘, 1))?explode(‘,‘, $newidx):0;
            if (empty($tmp)) {
                return $ret_arr;
            }
            $tmpc_idx = count($tmp);
            $tmpc_newidx = count($ntmp);
            if (is_int($ntmp) || empty($ntmp)) {
                for ($i=0; $i < $tmpc_idx; $i++) {
                    $ret_arr[]=$element[$tmp[$i]];
                }
            } else {
                if ($tmpc_newidx>=$tmpc_idx) {
                    for ($i=0; $i < $tmpc_newidx; $i++) {
                        $ret_arr[$element[$ntmp[$i]]]=$element[$tmp[$i]];
                    }
                }
            }
            return $ret_arr;
        }, $arr);
    }
}

$a = array(
    array(
        ‘id‘ => 2135,
        ‘first_name‘ => ‘John‘,
        ‘last_name‘ => ‘Doe‘,
    ),
    array(
        ‘id‘ => 3245,
        ‘first_name‘ => ‘Sally‘,
        ‘last_name‘ => ‘Smith‘,
    )
); 

var_export( array_col($a, ‘id,last_name‘,‘first_name,first_name‘)); 

?>

output:

<?php
array (//覆盖掉了
  0 =>
  array (
    ‘John‘ => ‘Doe‘,
  ),
  1 =>
  array (
    ‘Sally‘ => ‘Smith‘,
  ),
)
?>
时间: 2024-10-08 19:07:08

PHP获取二维数组中的指定若干列【同array_column】的相关文章

二维数组中查找指定的数

题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 分析:首先选取数组中右上角的数字.如果该数字等于要查找的数字,查找过程结束.如果该数字大于要查找的数字,就剔除这个数字所在的列.如果该数字小于要查找的数字,就剔除这个数字所在的行. 这样通过每次每次删除行或者列,来缩小查找范围. 代码: public class Solution { public boolean Fi

Java 数组 获取二维数组的行数和列数

对于Object[][] array,array.length返回行数,array[0].length返回列数,元素个数为array.length*array[0].length. 参考资料 在JAVA中怎样求二维数组的行数和列数? 原文地址:https://www.cnblogs.com/WJQ2017/p/8412615.html

PHP 如何获取二维数组中某个key的集合(高性能查找)遵渍妆组卓紫

http://blog.csdn.net/kangmiao89757/article/details/43390691 http://blog.csdn.net/kangmiao89757/article/details/43390495 http://blog.csdn.net/kangmiao89757/article/details/43390161 http://blog.csdn.net/kangmiao89757/article/details/43389909 http://blo

获取二维数组中的相同一维数组并记数

$a=array(      array(a,b,c), array(c,d,e), ); foreach($a as $k=>$v){ foreach($v as $value){ if(!in_array($value,$ids)) $ids[] = $value; } } foreach($a as $k=>$v){ foreach($v as $value){ foreach($ids as $key=>$id){ if($id == $value){ $res[$key]['i

c# 获取二维数组的行数和列数

static void Main(string[] args) { int[,] arr = new int[3, 3] { { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 } }; Console.WriteLine("行数:" + arr.Rank); Console.WriteLine("列数:" + (arr.GetUpperBound(arr.Rank - 1) + 1)); Console.ReadKey(); }

如何从二维数组中的多个key中获取指定key的值?

精华 LOVEME96 2016-10-21 10:40:19 浏览(1512) 回答(3) 赞(0) 新手求教:二维数组中一般会有多个key,如果我们要获得指定key的值,应该怎么做? 问题标签: php 回答(3) TimberSwift 2016-10-21 第一种:最简单的方法: foreach遍历数组,代码: foreach ($arr as $key => $value) { $arr2[] = $value['name']; } 另一种方法:使用了array_map $arr2 =

php 按照二位数组中某个指定的字段进行排序

/** * 按照二维数组中某个指定的某个字段进行排序 * @param $array 需要被排序的数组 * @param $flag 排序的标志 1,SORT_DESC 降序 2,SORT_ASC 升序 * @param int $range * @return array */function assortArray2($array,$flag,$keyword){ $sort = array( 'direction' => $flag, //排序顺序标志 1 ,SORT_DESC 降序:2

PHP获取二维数组指定字段值的和

array_sum(array_column($arr, 'num')); //获取二维数组 num字段的和 $arr = [ [ 'device_uid' => '123456', 'num' => '5', ], [ 'device_uid' => '123457', 'num' => '2', ], [ 'device_uid' => '123458', 'num' => '4', ], ]; echo '<pre>'; //先对二维数组进行处理,再对

获取二维数组里面实际存有数据的行数

写程序时遇到需要获取二维数组里面实际存有数据的行数,看到几篇博客中获取数组行数用的居然是array.Rank方法.这是获取维度的方法啊,我在下面贴出了我找到的正确的方法,很实用. /// <summary> /// 获取二维数组里面实际存有数据的行数 /// </summary> public static List<int> GetHasValueRowIndex(string[,] arr) { var hasValueRowIndex = new List<