2013-04-25 75 views
0

是否可以將以下使用PHP內置函數的數組轉換爲包含值id作爲關鍵字的數組值爲label作爲關聯值?如果不是什麼有效的方式?將2元素數組的數組轉換爲2個元素的數組key => value

謝謝。

輸入數組:

Array 
(
    [0] => Array 
     (
      [id] => 2 
      [label] => MTD-589 
     ) 

    [1] => Array 
     (
      [id] => 3 
      [label] => MTD-789 
     ) 

) 

輸出數組:

Array 
(
    [2] => MTD-589, 
    [3] => MTD-789, 
) 
+0

我在尋找內置函數,PHP有很多它們可以用於數組。但沒有發現任何東西 – sha256 2013-04-25 13:08:57

+1

這個特性可能是你想要的那個特性,在5.5中實現:https://wiki.php.net/rfc/array_column,但遺憾的是仍然在測試 – 2013-04-25 13:13:13

回答

1

介紹array_column(仍然在PHP 5.5測試版)的陣列。

$new_array = array_column($your_array 'label', 'id'); 

輸出

Array 
(
    [2] => MTD-589, 
    [3] => MTD-789, 
) 

使用array_walk

array_walk($array, function($a) use (&$return) { $return[$a['id']] = $a['label']; }); 
print_r($return); 
+0

正如我已經在一個對主帖發表評論。但是,由於它仍處於測試階段,因此您無法將此視爲有效答案。 – 2013-04-25 13:15:06

+0

@Anyone - 是的,我在回答中提到它。可以用於未來的參考。 – Rikesh 2013-04-25 13:16:39

+0

+1,但需要一種至少可以在5.3中工作的方式 – sha256 2013-04-25 13:23:24

2

我不知道任何內置函數,但我會這樣做:

假設$originalArray只要你想轉換

$newArray = array(); 

foreach ($originalArray as $element) 
    $newArray[$element["id"]] = $element["label"]; 

輸出結果

var_dump($newArray); 
+0

doen't工作!我可以考慮使用一個for循環來完成它。爲什麼兩個?我想我會申請,如果我沒有找到一種方法來使用內置插件 – sha256 2013-04-25 13:36:32

+0

請檢查更新的答案 – Saturnix 2013-04-25 13:45:48

+0

看起來應該工作,但我要與@Rikesh – sha256 2013-04-26 14:19:05

相關問題