2012-02-18 103 views
-2

我有此數組:如何將數組轉換爲鍵值對數組?

array(
    0 => array("name", "address", "city"), 
    1=> array("anoop", "palasis", "Indore"), 
    2=> array("ravinder", "annapurna", "Indore") 
) 

,我想使這個數組中這樣說:

array( 
    0 => array("name" = >"anoop" , "address" = >"palasia", "city" = >"Indore"), 
    1 => array("name" = >"ravinder" , "address" = >"annapurna", "city" = >"Indore") 
) 
+0

在你的問題請註明(如果)你想爲關鍵字的第一個元素使用的項目。 – 2012-02-18 18:07:09

+0

我想將該數組放入鍵值對中...請幫助我。 – 2012-02-18 18:08:43

回答

4

使用array_combine。如果$array包含您的數據

$result = array(
      array_combine($array[0], $array[1]), 
      array_combine($array[0], $array[2]) 
     ); 

一般

$result = array(); 
$len = count($array); 
for($i=1;$i<$len; $i++){ 
    $result[] = array_combine($array[0], $array[$i]); 
} 
0

假設你解析一個CSV文件,檢查出這個問題的答案:

Get associative array from csv

+0

無論是近距離投票還是評論。它不能回答。[應該我們標誌答案只有包含一個鏈接到另一個答案](http://meta.stackexchange.com/questions/95491/should-我們旗 - 答案 - 即只-含有-一個鏈接到另一個那麼答案)。 – 2012-02-18 18:20:30

+0

謝謝,我已閱讀討論。然而,我不同意,並且認爲在鏈接到引用*關聯數組*的概念的問題上有一些附加價值,OP以前沒有提及。 – 2012-02-18 18:32:04

1

如果您的數據在$array

$res = array(); 
foreach ($array as $key=>$value) { 
    if ($key == 0) { 
     continue; 
    } 
    for ($i = 0; $i < count($array[0]); $i++) { 
     $res[$array[0][$i]] = $value[$i]; 
    } 
} 

結果現在在$res

+0

-1不僅爲內循環而且在外循環中執行count()。 – 2012-02-18 18:13:46

+0

@Phoenix效率甚至在這裏有意義嗎?你是認真的嗎? – Borealid 2012-02-18 18:14:05

+1

這是一個不好的做法。 OP中顯示的數組有2行要處理,但數組可能已被截斷以便在此處發佈;它可能實際上擁有數千條記錄。或者有人可能會遇到這個答案,同時解決類似的問題,並採取壞習慣。 – 2012-02-18 18:17:38

1

這裏是你可以使用函數:

function rewrap(Array $input){ 
    $key_names = array_shift($input); 
    $output = Array(); 
    foreach($input as $index => $inner_array){ 
     $output[] = array_combine($key_names,$inner_array); 
    } 
    return $output; 
} 

這裏是一個演示:

// Include the function from above here 
$start = array(
    0 => array("name", "address", "city"), 
    1 => array("anoop", "palasis", "Indore"), 
    2 => array("ravinder", "annapurna", "Indore") 
); 
print_r(rewrap($start)); 

此輸出:

Array 
(
    [0] => Array 
     (
      [name] => anoop 
      [address] => palasis 
      [city] => Indore 
     ) 

    [1] => Array 
     (
      [name] => ravinder 
      [address] => annapurna 
      [city] => Indore 
     ) 

) 

注:您的第一個數組定義索引1兩次,所以我改變了第二個o ne到2,像這樣:

array(0 => array("name", "address", "city"), 1 => array("anoop", "palasis", "Indore"),2 => array("ravinder", "annapurna", "Indore")) 

這可能只是一個錯字。

1

現代化的方法是:

$data = array_column($data, 'value', 'key'); 

你的情況:

$data = array_column($data, 1, 0); 
相關問題