2014-02-06 138 views
-1

我從這個whant:PHP array_filter返回數組鍵

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。

+1

'array_filter'相當貼切*過濾器*,它不*更改數組中的元素。你正在尋找'array_map'。 – deceze

回答

2

您必須使用array_map()而不是array_filter()。 不知何故這樣的:

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

好吧,不是一個班輪雖然 – Benedictus

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

+1

'array_column'在PHP 5.5 + – hindmost

+0

工作@ behindmost是我已經添加了我的答案 – Nambi

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