2011-06-18 36 views
0

我有兩個數組,都來自SQL查詢,每個來自不同的數據庫。由於無法將這2個SQL查詢合併爲1個查詢以獲得1個數組(由於某些限制),所以我不得不組合2個數組。問題是,我似乎無法得到這個工作。如何合併這兩個數組(php + sql)

這是陣列1:

echo '<ul id="friends">'; 
    foreach($result as $friend => $value) 
     { 
      echo '<li><img src="'.$value['pic_square'].'" alt="" />'.$value['uid'].' ' . $value['name'] . '</li>'; 
     } 
    echo '</ul>'; 

,並且將輸出:

  • 圖片12345戴夫
  • 圖片67890麥克

這是陣列2:

echo '<ul id="friends">'; 
    while($value = mysql_fetch_array($query)) 
     { 
     echo '<li> '.$value['fbid'] .' '. $value['userphone'] .'</li>'; 

     } 
    echo '</ul>'; 

,並會輸出:

  • 12345 020-12345
  • 67890 020-56789

我需要做什麼?我想合併這2個陣列,這樣從陣列2 phonenr將用戶名後面可增加從陣列1

一例的輸出應該是什麼樣子:

  • 圖片戴夫020-12345
  • 圖片麥克020-56789

FBID和uid是ID的相互連結,但組合的陣列中的未示出。

希望有人知道如何做到這一點!

親切的問候,

莫里斯

+1

是否有數據來自2個不同的SQL服務器?如果不是,你有沒有任何理由不把這兩張桌子放在一起? –

+0

是的,他們來自2個不同的SQL服務器 – Maurice

回答

1

這是我能想到的最簡單和最有效的方式。 foreach循環遍歷你的第一個數組,基本上使用「uid」作爲關鍵字添加新的鍵/值對。這將使您能夠在循環查看第二個查詢的結果時輕鬆找到它們。

<?php 

// First query. 
foreach ($result as $key => $value) 
{ 
    // Add a new key/value pair in the array using the "uid" as the key and $value as the value. 
    $result[$value['uid']] = $value; 

    // Remove the previous key/value pair value. 
    unset($result[$key]); 
} 

// Second query. 
while ($value = mysql_fetch_array($query)) 
    echo sprintf('<li>%s %s %s</li>', $result[$value['fbid']]['pic_square'], $result[$value['fbid']]['name'], $value['userphone']); 
+0

完美的這對我工作。謝謝! – Maurice

-1

由於陣列集合名稱是不同的(不同的列名),我不知道直接合並會工作。

$result = array_merge($result, $query); 
print_r($result); 

但是你可以像下面一樣工作。

給循環並存儲在來自兩個數組的第三個數組中,並在第三個數組上執行必要的操作。

+0

謝謝,但這給了我一個錯誤: 警告:array_merge()[function.array-merge]:參數#2不是/..../etc中的數組。 顯然,while循環不是一個數組:(如何解決這個問題?謝謝 – Maurice