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:如何获取键值的索引数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php数组操作之获取数组元素索引(键)值

如何在列表中获取特定值的索引 - python [重复]

如何从对象数组中获取键值列表-JavaScript [重复]

php 如何获取XML 并转成2维数组

如何在 PHP 中遍历数组并获取键值

如何在对象数组中获取 1 到 n 键值并将它们推送到新数组?(Javascript)[重复]