2012-04-30 32 views
0

存储在$g结果为1和2,下面的代码我已经写在下面,我$array['music']仅存储为2,但我要的是执行的最后一个元素我SQL查询下的foreach 2倍和匹配的$g这是图1和2与mu_id的值(mu_id是从另一个表music列名)和行1和2中的所有行的数据存储在给$array['music']阵列是由最后一个元素在PHP覆盖

它仅存储用于第二行(2)不为1时,或者为内部循环的第二次执行它是覆盖它。如果有任何逻辑可以使其发挥作用,请让我知道。

foreach($genre as $g) 
    { 
     echo $g; 
     echo "<br>"; 
     $array['music'] = $m -> where('mu_id', $g) -> get(); 
    } 
+0

什么是$ g的数据?什么是$ m?给你的变量适当的名字,所以他们更容易遵循。我们不需要再次学习我们的ABC。 –

+0

@Truth:CI Datamapper文档在其所有示例中都使用单字母变量,因此这可能只是复制这些示例。我同意这是一个坏习惯,但在这种情况下,我会假设'$ g'是“流派”,'$ m'是“音乐”。我也只会用完整的单词。 –

+0

@madmartigan我很清楚这一点。我只是说他不应该自己做,也不要盲目复制实例而不理解数组的基础知识。 –

回答

6

你重新声明每次整个数组而不是增加了,而是使用此:

foreach($genre as $g) 
{ 
    $array['music'][] = $m->where('mu_id', $g)->get(); 
} 

甚至更​​好,更少的查询:

$array['music'] = $m->where_in('mu_id', $genre)->get(); 
+0

非常感谢。由于我是codeigniter和datamapper的新手,我想知道如何使它工作。这对我来说很神奇。我非常高兴,因为这现在完美地工作。什么是快速回复!再次感谢...... :) –

+1

CI和DM都有非常好的文档,请务必经常阅读。也就是说,这只是一个基本的PHP错误,PHP也有非常好的文档,请确保经常引用它们。 –

0

如果你想存储阵列中的全部,你应该使用$array['music'][]代替$array['music']