php:如何获取键值的索引数组[重复]
Posted
技术标签:
【中文标题】php:如何获取键值的索引数组[重复]【英文标题】:php: how to get indexed array of key values [duplicate] 【发布时间】:2014-03-06 14:50:33 【问题描述】:假设我有一个类似的数组
$arr = array (
array( 'foo' => 'Lorem' ),
array( 'foo' => 'ipsum' ),
array( 'foo' => 'dolor' ),
array( 'foo' => 'sit' )
);
如何快速将此数组转换为键“foo”的索引数组?所以结果是
Array
(
[0] => 'Lorem'
[1] => 'ipsum'
[2] => 'dolor'
[3] => 'sit'
)
有没有快速使用 php 函数的方法?还是我只需要创建一个新数组,遍历另一个数组并手动插入值。
【问题讨论】:
@RahilWazir:这不是重复的。另一个问题的解决方案是使用array_values
,但是array_values
在我的情况下只会产生相同的数组。请参阅下面的答案。
【参考方案1】:
您可以使用array_map()
。这行得通 -
$new_arr = array_map(function($v)return $v['foo'];, $arr);
var_dump($new_arr);
// OUTPUT
array
0 => string 'Lorem' (length=5)
1 => string 'ipsum' (length=5)
2 => string 'dolor' (length=5)
3 => string 'sit' (length=3)
【讨论】:
谢谢,没想到 :)【参考方案2】:.. 或使用array_map(..)
:
<?php
$arr = array (
array( 'foo' => 'Lorem' ),
array( 'foo' => 'ipsum' ),
array( 'foo' => 'dolor' ),
array( 'foo' => 'sit' )
);
print_r(array_map(function($x)return $x["foo"];, $arr));
输出:
Array
(
[0] => Lorem
[1] => ipsum
[2] => dolor
[3] => sit
)
【讨论】:
【参考方案3】:您可以使用 PHP 5.5 中提供的array_column
print_r(array_column($arr,'foo'));
代码...
<?php
$arr = array (
array( 'foo' => 'Lorem' ),
array( 'foo' => 'ipsum' ),
array( 'foo' => 'dolor' ),
array( 'foo' => 'sit' )
);
print_r(array_column($arr,'foo'));
Demo
【讨论】:
哦,我明白了,太糟糕了,这不是早先介绍的:)。所以我想当 PHP 5.5 不可用时我必须手动完成。 @Spooky:或者,你可以说if (!function_exists('array_column')) function array_column($arr, $colname, $keyname=null) /* do exactly what array_column does */
,一旦你切换到5.5,你就会自动开始使用内置版本...... :)
@cHao,太棒了!以上是关于php:如何获取键值的索引数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章