我是新来的,但是很喜欢阅读别人的问题和答案。我对PHP相当陌生,正在做一个项目-在MySQL中基本表查找等。我最终想要得到的是一个数组的数组,它的形式如下所示,带有调味品(不是我的实际项目)。内容来自两个不同的表。对于每个调味品名称(来自表1),我在表2中查找按ID链接的调味品类型。搜索和抓取东西很好,但是我在循环和构建最后的$Condiments数组时遇到了麻烦。
在循环的第一部分,我从$行中获取调味品名称并将其附加到数组中。但是我需要每个调味品的名字都是一个空数组,以便在下一步中放入一些东西。我已经环顾四周,但无法找到一个好方法来迭代追加新的占位符数组到数组。是否有一个优雅的解决方案?一些我没有利用的很酷的函数?谢谢!
// SQL search for condiment words, blah blah, leading to...
$rowsnumber = mysql_num_rows($result);
for ($j = 0 ; $j < $rowsnumber ; ++$j)
{
$row = mysql_fetch_row($result); // $row is an array featuring a condiment name and other stuff.
$Condiments[] = $row[1]; // condiment name goes in array.
$CondimentType = searchTable2($row[0]);
// using the condiment name's ID, I look up its matching types via a function.
// $CondimentType is now an array of IDs and types from Table2 that I want to append to the condiment name I just added above.
$Condiments[$row[1]] = $CondimentType;
// I repeat the process for the next name
}
// Final desired result...
$Condiments=
Array
(
[Pickles] => Array
(
[34] => Dill
[23] => Butter
)
[Mustard] => Array
(
[22] => Hot
)
[Relish] => Array
(
[3] => Pickle
)
)
所以就像我说的,您需要使用join来执行所需的任务。
你可以在这里找到更多关于join的解释
http://dev.mysql.com/doc/refman/5.0/en/join.html在您的示例中,该查询应该执行
任务select t1.word,t3.word
from table1 as t1 join table2 as t2 on t1.id =t2.id
left join table1 as t3 on t3.id = t2.linkid
我在我的机器上运行了这个查询,结果如下
+---------+--------+
| word | word |
+---------+--------+
| Pickles | Dill |
| Pickles | Butter |
| Mustard | Hot |
| Relish | Pickle |
+---------+--------+
因此,不是遍历每一行,而是执行连接并获得结果。在PHP中,您可以执行所需的数组格式。希望这对你有帮助