2012-03-30 51 views
0

我有一個名稱爲$name[]的數組,另一個名稱爲$content[]這兩個數組都有相同的對象(3)。 $content[]陣列可能有0,1或2條消息,如下所示。如何在array_combine不是解決方案時組合這兩個數組?

我的目標是回顯$name[0]$content[0]等等。該名稱將首先打印並在可用消息之後打印。我試圖使用array_combine沒有運氣。

有什麼辦法可以做到這一點?

$名稱[]

Array 
(
    [0] => 
    [1] => 
    [2] => 
) 

$內容[]

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [message] => 
       ) 

     ) 

    [1] => Array 
     (
     ) 

    [2] => Array 
     (
      [0] => Array 
       (
        [message] => 
       ) 

      [1] => Array 
       (
        [message] => 
       ) 

     ) 
) 
+0

你忽略了一個關鍵細節:組合陣列應該是什麼樣子。從你所描述的,'array_combine'應該是解決方案。結合樣本數組的結果應該是什麼? 'array_combine'的結果不合適嗎?對於示例數據,「var_export」的輸出比'var_dump'更有用,因爲它會生成有效的PHP。 – outis 2012-03-30 03:55:16

回答

2

真的不知道你在做什麼;這個問題不是很清楚。你的預期產出是多少?

這是我在黑暗中刺:

$count = min(count($name),count($content)); 

for($i=0; $i<$count; ++$i) { 
    echo $name[$i]; 
    foreach($content[$i] as $msg) { 
     echo $msg['message']; 
    } 
} 
+0

謝謝馬克。它的工作原理與我想要的一樣小小的調整。 – EnexoOnoma 2012-03-30 03:55:14

+0

帶'MultipleIterator'的PHP 5.3+替代解決方案:http://stackoverflow.com/a/14724544/664108 – 2013-02-06 08:59:44

1

像這樣嗎?

$name = array(...); 
$content = array(...); 

foreach($content as $k => $v) 
{ 
    if(array_key_exists($k, $name)) 
    echo $name[$k]; 

    if(array_key_exists($k, $content)) 
    echo $content[$k]; 
} 
+0

我得到的是* Array *後面的名字。 – EnexoOnoma 2012-03-30 03:46:01

+1

@Kaoukkos:這是因爲$ content是一個數組數組。只是循環它。 – mpen 2012-03-30 03:47:05