博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 返回数组中指定多列的方法
阅读量:6968 次
发布时间:2019-06-27

本文共 3177 字,大约阅读时间需要 10 分钟。

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

1.array_column说明

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

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

1

参数说明:

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
)

)

转载于:https://www.cnblogs.com/beili/p/10797461.html

你可能感兴趣的文章
POJ3061 ZOJ3123 Subsequence【前缀和+二分搜索+尺取法】
查看>>
png库结合zlib库使用出现的一个链接问题的解决
查看>>
对象序列化 输入输出流概念 InputOutStream OutputStream
查看>>
linux shell 基础 使用日志与心得
查看>>
转- prototype
查看>>
Linux下du加强版,灵活快速定位硬盘使用情况,无需安装
查看>>
使用Python批量修改数据库执行Sql文件
查看>>
重载运算符作为成员函数还是非成员函数
查看>>
移动端项目开发小结
查看>>
Gym - 101972B Arabella Collegiate Programming Contest (2018) B. Updating the Tree 树DFS
查看>>
Sass的使用
查看>>
Struts2问题总结
查看>>
OpenStack 界面开发中的排序问题
查看>>
ID--HANDLE--HWND三者之间的互相转换
查看>>
Elasticsearch学习笔记-04修改数据
查看>>
ubuntu 18.04 添加快快捷方式
查看>>
Hibernate总结(二)
查看>>
python寻找模块的路径顺序
查看>>
Oracle 基础教程
查看>>
TSP问题
查看>>