2013-09-23 81 views
3

我可能說錯了,請隨時編輯它以獲得更好的版本。如何從PHP中的數組中獲取「子數組」?

我正在尋找一種方式來做到這一點:

我有一個數組,如:

$ray=array(); 
    $ray[0] = array(); 
     $ray[0]['id'] = "1"; 
     $ray[0]['name'] = "lorem"; 
    $ray[1] = array(); 
     $ray[1]['id'] = "2"; 
     $ray[1]['name'] = "ipsum"; 

,我希望得到名稱的數組,這樣

$names[0] = "lorem" 
$names[1] = "ipsum" 

我想我可以通過foreach來手動創建數組,但我想知道是否有內置函數。

感謝您的幫助!

+6

如果你使用PHP 5.5,那麼就稱爲一個偉大的新功能[array_column()( http://php.net/manual/en/function.array-column.php),這將做你到底在問什麼 –

+0

@MarkBaker不錯,謝謝!我使用的是WAMPServer的最新版本,所以我想它包含最新的PHP,但我不確定我的Web主機是否安裝了PHP 5.5。 ** edit **:nope。即使WampServer沒有它:(它已安裝PHP 5.4.12。 – jeff

回答

4

版PHP 4> =

$finalarray = array_map(create_function('$yourarray', 'return $yourarray["arrayindex"];'), $actualarray); 

array map

+0

這很有趣,但我需要編寫一個函數映射'(array,key) - > element'? – jeff

+0

可以在單行中執行。也接受匿名功能 –

+0

好的,謝謝你的幫助。而且,對不起在這裏偷懶,但我會接受你的答案,如果它是完整的:) – jeff

1

如果你不具備的先進功能,這應該是你所期望:根據你的問題,我可以

<?php 
$ray = array(
    array(
     'id' => "1", 
     'name' => "Lorem" 
    ), 
    array(
     'id' => "1", 
     'name' => "Ipsum" 
    ) 
); 

$res = array(); 
foreach ($ray as $val) { 
    $res[] = $val['name']; 
} 

print_r ($res); 
?> 
1

見2選項

一個是返回一個新的數組,並保留在n的ID EW陣列

$output = array(); 
foreach ($ray as $key => $value) { 
    $output[$value['id']] = $value['name']; 
} 

兩個你不關心ID和剛需的名字

$output = array(); 
foreach ($ray as $key => $value) { 
    $output[$key] = $value['name']; 
}