2014-02-23 69 views
0

我需要多維數組的幫助。我需要從PHP中的兩個其他數組輸出/創建一個新數組。我知道我的例子是錯誤的,但這裏是我有什麼,幾乎工作的例子:在foreach循環中輸出2個不同多維數組的數組1

$myarray = array(
     'customid1' = array(
        name=> 'Tim', 
        address=> '23 Some Address' 
       ), 
     'customid2' = array(
        name=> 'John', 
        address=> 'Another Address' 
       ) 
); 

$keys = array(); 
$values = array(); 

foreach($myarray as $key => $keyitem) { 
     $getkeys = $myarray[$key]['name'] .'-and-a-string'; 
     $keys[] = $getkeys; 
} 

foreach($myarray as $value => $valueitem) { 
     $getvalues = 'some-other-text-'. $myarray[$key]['address']; 
     $values[] = $getvalues;   
    } 

$newarray = array_combine($keys, $values); 

上面的代碼會得到所有的按鍵右側,除了新的數組中該鍵的值。相反,它會顯示數組中所有鍵的最後一個值。所以我print_r的結果將類似於:

Array (Tim-and-a-string => some-other-text-Another Address 
     John-and-a-string => some-other-text-Another Address 
) 

正如你所看到的,「一些,其他的文本,另一個地址」上所有的人出現,但第二項「蒂姆 - 和一個字符串的需求有「一些,其他文本-23的一些地址」包括

回答

2

這是一個很小的錯誤,但您使用了錯誤的變量:

您在第二foreach()使用$key代替$value

$key將是相同的,因爲新的foreach循環不會覆蓋之前在循環的最後關鍵。

這應該工作:

$myarray = array(
     'customid1' = array(
        name=> 'Tim', 
        address=> '23 Some Address' 
       ), 
     'customid2' = array(
        name=> 'John', 
        address=> 'Another Address' 
       ) 
); 

$keys = array(); 
$values = array(); 

foreach($myarray as $key => $keyitem) { 
     $getkeys = $myarray[$key]['name'] .'-and-a-string'; 
     $keys[] = $getkeys; 
} 

foreach($myarray as $value => $valueitem) { 
     $getvalues = 'some-other-text-'. $myarray[$value]['address']; 
     $values[] = $getvalues;   
    } 

$newarray = array_combine($keys, $values); 
+0

謝謝,這是我需要的。不能相信我錯過了這一點。 – codenift

+0

不客氣。 – Anonymous

0

試試這個:

$newarray = array_combine(
    array_values(array_map(function ($v) { return $v['name'].'-and-a-string'; }, $myarray)), 
    array_values(array_map(function ($v) { return 'some-other-text-'.$v['address']; }, $myarray)) 
);