2011-04-03 145 views
1

所以,我有這兩個foreach腓合併陣列

foreach($find as $e) { 
     $theData[] = array('href' => $e->href, 'linkText' => $e->plaintext); 

     foreach($findText as $f){ 
      $theData[] = array('description' => $f->plaintext); 
     } 
    } 

所以,我需要的結果是這樣的:$海圖=陣列('HREF => $ E->的href, 'LINKTEXT' => $ e->明文,'description'=> $ f->明文);

array_merge不想做我想做的。任何幫助?

+0

這兩個數組有相同的長度? – Sourav 2011-04-03 18:10:50

回答

2

嘗試...

$i = 0; 
foreach($find as $e){ 
    $data[$i] = array('href' => $e->href, 'linkText' => $e->plaintext); 

    foreach($findText as $f){ 
     $data[$i]["description"][] = $f->plaintext; 
    } 
$i++; 
} 
+0

它有點作品,但正如我上面說的描述數組它更小(有更少的整數),那麼另一個...所以它具有相同的描述爲每個數組整數..它只是將第一個描述添加到所有元素 – Uffo 2011-04-03 19:48:05

+0

@Uffo我在'$ data [$ i] [「description」]上加了'[]'',這就是你想要的。稍後打印$數據並查看。 – 2011-04-03 19:53:53

+0

該死的,你很聰明,thx很多人,它的作品就像一個魅力 – Uffo 2011-04-03 19:55:58

2

如果你的陣列都已經自動生成整數鍵,那麼它很簡單:

$theData = array(); 
for($i = 0; $i < count($e); ++$i) { 
    $theData[] = array(
     'href' => $find[$i]->href, 
     'linkText' => $find[$i]->plaintext, 
     'description' => $findText[$i]->plaintext); 
} 

注意,上面的代碼將無法正常工作,如果$find$findText唐沒有相同數量的項目,或者密鑰不匹配。一般來說,如果沒有更具體的信息,這項工作會變得相當混亂。

最好的切實可行的建議我可以給是重新審視其創建$find$findText代碼 - 這將是更容易實現在那個時候你的目標。

+0

是的,我發現了findText的bug,我會找回給你們.. – Uffo 2011-04-03 18:16:28

+0

那麼容納描述的變量有時可以是空的,所以我需要預先填充NULL insted ....我該怎麼做?因爲我需要尊重數組structure.thx – Uffo 2011-04-03 19:37:19

1

允許我假設你正在合併來自兩個查詢的信息。您擁有的一個選擇是通過加入您的查詢來一次性獲取數據庫中的href,linktext和說明。

select table_1.href,table_1.plaintext, table_2.plaintext 
from table_1 
where //insert your where clause, if appropriate 
join table_2 on table_1.id = table_2.parent_id 

其中表一是你的$ find數組,而table_2是你的$ findText數組;而table_2.parent_id是與來自table_1的id匹配的值。加入這個查詢中的表格將把你假設的兩個查詢中的所有字段存儲到一個變量中。

+0

不,我解析一些HTML,我需要解決一些事情,反正10倍:) – Uffo 2011-04-03 19:38:20