PHP array_filter返回数组键

时间:2014-02-06 15:12:54

标签: php arrays filter key

我从中得知:

Array{
   [1] => Array{ [id] => 1, [name] => paul},
   [2] => Array{ [id] => 2, [name] => eva}
}

得到这个:

Array{
   [1] => paul,
   [2] => eva
}

我曾经使用array_filter函数来实现这一点,但它返回了输入的相同数组。我做错了什么?

array_filter($array, create_function('&$a','return $a["name"]);'));

P.S。我知道我可以使用foreach,但我知道这是一个oneliner。

3 个答案:

答案 0 :(得分:2)

您必须使用array_map(),而不是array_filter()。 不知怎的,这样:

function func($a) {
    return $a["name"];
}
array_map('func', $array);

答案 1 :(得分:2)

你需要使用array_map()而不是array_filter() 尝试

function cube($n)
{
    return($n * $n * $n);
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);

更多信息: http://www.php.net/array_map

答案 2 :(得分:0)

使用array_combinearray_column

array_column()如果php version> = PHP 5.5

<?php

$a=array(array('id'=>"1",'name'=>"paul"),array('id'=>"2",'name'=>"eva"));

$a=array_combine(array_column($a,"id"),array_column($a,"name"));
print_r($a);

<强>输出:

Array
(
    [1] => paul
    [2] => eva
)

Demo