2011-04-03 92 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