关闭

php 返回数组中指定多列的方法

标签: phparraycolumn返回多列索引
26817人阅读 评论(0) 收藏 举报
分类:

php array_column 方法可以返回数组中指定的一列,但不能返回多列,本文将介绍array_column方法的使用,并用代码演示返回数组中指定多列的方法。

1.array_column说明

array_column可以返回数组中指定一列

array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )

参数说明:

input
需要取出数组列的多维数组。 如果提供的是包含一组对象的数组,只有 public 属性会被直接取出。 为了也能取出 private 和 protected 属性,类必须实现 __get() 和 __isset() 魔术方法。

column_key
需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)

index_key
作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。


例子:
返回数组中name列

<?php
$arr = array(
    array('id'=>1001, 'name'=>'fdipzone', 'age'=>18, 'profession'=>'programmer'),
    array('id'=>1002, 'name'=>'terry', 'age'=>19, 'profession'=>'designer'),
    array('id'=>1003, 'name'=>'alex', 'age'=>20, 'profession'=>'tester'),
);

$result = array_column($arr, 'name');

print_r($result);
?>

输出:

Array
(
    [0] => fdipzone
    [1] => terry
    [2] => alex
)


2.返回数组中指定多列的方法

array_column方法可以返回数组中指定一列,但不能返回多列,因此写了以下这个方法,支持返回数组中多列,参数调用与array_column相似。

<?php
/**
 * 返回数组中指定多列
 *
 * @param  Array  $input       需要取出数组列的多维数组
 * @param  String $column_keys 要取出的列名,逗号分隔,如不传则返回所有列
 * @param  String $index_key   作为返回数组的索引的列
 * @return Array
 */
function array_columns($input, $column_keys=null, $index_key=null){
    $result = array();

    $keys =isset($column_keys)? explode(',', $column_keys) : array();

    if($input){
        foreach($input as $k=>$v){

            // 指定返回列
            if($keys){
                $tmp = array();
                foreach($keys as $key){
                    $tmp[$key] = $v[$key];
                }
            }else{
                $tmp = $v;
            }

            // 指定索引列
            if(isset($index_key)){
                $result[$v[$index_key]] = $tmp;
            }else{
                $result[] = $tmp;
            }

        }
    }

    return $result;
}

// 演示代码
$arr = array(
    array('id'=>1001, 'name'=>'fdipzone', 'age'=>18, 'profession'=>'programmer'),
    array('id'=>1002, 'name'=>'terry', 'age'=>19, 'profession'=>'designer'),
    array('id'=>1003, 'name'=>'alex', 'age'=>20, 'profession'=>'tester'),
);

echo '指定返回列及索引列'.PHP_EOL;
$result = array_columns($arr, 'name,profession', 'id');
print_r($result);

echo PHP_EOL.'指定返回列,不指定索引列'.PHP_EOL;
$result = array_columns($arr, 'name,profession');
print_r($result);

echo PHP_EOL.'不指定返回列,指定索引列'.PHP_EOL;
$result = array_columns($arr, null, 'id');
print_r($result);

echo PHP_EOL.'不指定返回列,不指定索引列'.PHP_EOL;
$result = array_columns($arr);
print_r($result);
?>

输出:

指定返回列及索引列
Array
(
    [1001] => Array
        (
            [name] => fdipzone
            [profession] => programmer
        )

    [1002] => Array
        (
            [name] => terry
            [profession] => designer
        )

    [1003] => Array
        (
            [name] => alex
            [profession] => tester
        )

)

指定返回列,不指定索引列
Array
(
    [0] => Array
        (
            [name] => fdipzone
            [profession] => programmer
        )

    [1] => Array
        (
            [name] => terry
            [profession] => designer
        )

    [2] => Array
        (
            [name] => alex
            [profession] => tester
        )

)

不指定返回列,指定索引列
Array
(
    [1001] => Array
        (
            [id] => 1001
            [name] => fdipzone
            [age] => 18
            [profession] => programmer
        )

    [1002] => Array
        (
            [id] => 1002
            [name] => terry
            [age] => 19
            [profession] => designer
        )

    [1003] => Array
        (
            [id] => 1003
            [name] => alex
            [age] => 20
            [profession] => tester
        )

)

不指定返回列,不指定索引列
Array
(
    [0] => Array
        (
            [id] => 1001
            [name] => fdipzone
            [age] => 18
            [profession] => programmer
        )

    [1] => Array
        (
            [id] => 1002
            [name] => terry
            [age] => 19
            [profession] => designer
        )

    [2] => Array
        (
            [id] => 1003
            [name] => alex
            [age] => 20
            [profession] => tester
        )

)
1
0
查看评论

实现PHP5.5版本的array_column,并扩展取多列的功能

<?php /** * 返回的值的一列$input阵列,确定由columnKey。或者,您可以提供一个indexKey指数的$input数组中的值从indexKey列返回的数组中的值。 * 像从数据库获取一列,但返回是数组(扩展:获取多列) * @param array $input ...
  • lixiaogang1113
  • lixiaogang1113
  • 2013-03-27 09:32
  • 2611

php 返回数组中指定多列的方法

php array_column 方法可以返回数组中指定的一列,但不能返回多列,本文将介绍array_column方法的使用,并用代码演示返回数组中指定多列的方法。
  • fdipzone
  • fdipzone
  • 2017-09-23 16:31
  • 26817

数组取出使用某一个entiti

数组取出使用某一个entiti
  • batmannolove
  • batmannolove
  • 2015-12-30 19:55
  • 165

PHP中return返回数组的一点用法

本文就学习中遇到的PHP函数return返回值的问题,这一点return用法进行了说明。 在函数的内部用return返回一个值或者为空来结束函数的运行。但是在return一个数组的时候,也可以在函数的内部直接使用print_r来打印。但一般都不这么做。 拿上一篇文章举例: 也可以这么实现: ...
  • u012675743
  • u012675743
  • 2015-04-21 23:48
  • 6053

php删除数组中指定值的元素的几种方法

测试数组如下: //这是一个测试数组 $testArr = array( 't' => 'qq', 'q' => 'qq', 'b' => 'baidu', 'a...
  • u011250882
  • u011250882
  • 2015-09-21 14:31
  • 23073

【php】数组 取某一列的值 array_column

实例 从记录集中取出 last_name 列:<?php // 表示由数据库返回的可能记录集的数组 $a = array( array( 'id' => 5698, 'first_name' => 'Bill',...
  • u010737354
  • u010737354
  • 2016-09-27 14:24
  • 467

取出二维数据中的一列值并转化为一维数组

/*** 作者:心灯* 说明:取出二维数据中的一列值并转化为一维数组* 日期:2006-1-18*/function arrs2arr($arrs,$key){ $array = array(); foreach($arrs as $val){  foreac...
  • bjbs_270
  • bjbs_270
  • 2006-01-18 15:01
  • 3698

13.子查询返回多行多列的数据

假设有下面两张表: 部门表dept 雇员表emp         列出公司各个部门的经理的姓名、薪金、部门名称、部门人数、部门平均工资。 步骤1:查找每个部门经理的姓名和薪金。 select ename,sal from emp where job...
  • lzhui1987
  • lzhui1987
  • 2017-02-17 11:27
  • 1562

php利用数组函数,查询并删除数据库多列重复数据

<br /><?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect:...
  • xxzqyall
  • xxzqyall
  • 2011-01-18 13:30
  • 2558

php 和 javascript 中的数组分别如何获取数组中的值

例如,现在有个名为 arr[“aaa”,"bbb","ccc","ddd"] 的数组,大家看我如何获取这个数组中的值: +++++++++++如果是在php 语句中:++++++++++++++ $test = arr[“...
  • k8080880
  • k8080880
  • 2011-09-19 10:02
  • 1587
    微博
    微信公众号
    微信分享公众平台-破晓领域
    破晓领域
    微信号:fdipzone-idea
    名称:破晓领域

    个人资料
    • 访问:7818106次
    • 积分:46031
    • 等级:
    • 排名:第81名
    • 原创:295篇
    • 转载:24篇
    • 译文:0篇
    • 评论:511条
    博客专栏
    最新评论