Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用sql结果中的数组迭代追加数组_Php_Mysql_Arrays_Multidimensional Array_Iteration - Fatal编程技术网

Php 使用sql结果中的数组迭代追加数组

Php 使用sql结果中的数组迭代追加数组,php,mysql,arrays,multidimensional-array,iteration,Php,Mysql,Arrays,Multidimensional Array,Iteration,我是新来的,但我喜欢阅读别人的问题和答案。我是PHP新手,正在做一个项目——MySQL中的基本表查找,等等。 最后我想要的是一个数组,其形式如下所示的调味品(不是我的实际项目)。内容来自两个不同的表。对于每一个调味品名称(来自表1),我在表2中查找调味品的类型,通过ID链接。搜索和抓取内容是可以的,但是我在循环和构建final$consuments数组时遇到了问题 循环的第一部分,我从$行获取调味品名称,并将其附加到数组中。但我需要这些调味品名称中的每一个都是一个空数组,以便在下一步中放入一些东

我是新来的,但我喜欢阅读别人的问题和答案。我是PHP新手,正在做一个项目——MySQL中的基本表查找,等等。 最后我想要的是一个数组,其形式如下所示的调味品(不是我的实际项目)。内容来自两个不同的表。对于每一个调味品名称(来自表1),我在表2中查找调味品的类型,通过ID链接。搜索和抓取内容是可以的,但是我在循环和构建final$consuments数组时遇到了问题

循环的第一部分,我从$行获取调味品名称,并将其附加到数组中。但我需要这些调味品名称中的每一个都是一个空数组,以便在下一步中放入一些东西。我环顾了四周,但找不到一个好方法来迭代地将新的占位符数组追加到数组中。有优雅的解决方案吗?一些我没有利用的很酷的功能?谢谢

// 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
        )
)
//SQL搜索调味品词,诸如此类,导致。。。
$rowsnumber=mysql\u num\u行($result);
对于($j=0;$j<$rowsnumber;++$j)
{
$row=mysql_fetch_row($result);//$row是一个数组,包含调味品名称和其他内容。
$consuments[]=$row[1];//调味品名称放入数组中。
$consumentType=searchTable2($row[0]);
//使用调味品名称的ID,我通过一个函数查找它的匹配类型。
//$consummentType现在是表2中的ID和类型数组,我想将其附加到刚才添加的调味品名称中。
$调味品[$行[1]]=$调味品类型;
//我对下一个名字重复这个过程
}
//最终预期结果。。。
$调味品=
排列
(
[Pickles]=>数组
(
[34]=>莳萝
[23]=>黄油
)
[芥末]=>阵列
(
[22]=>热
)
[品味]=>阵列
(
[3] =>泡菜
)
)

正如我所说,您需要使用join来执行所需的任务

你可以在这里找到更多关于连接的解释

在您的情况下,这个查询应该完成这项工作

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中,您可以执行所需的数组格式。
希望这将对您有所帮助

如果您可以发布数据库的模式,这将对我们有很大帮助。据我所知,似乎你需要加入这两个表来加速这个过程process@Don有点接近我真正的项目。基本上有两个表格,一个有单词,另一个将单词链接在一起。一位朋友还建议使用SQL来合并表信息。不确定如何在注释字段中更好地显示此内容<代码>插入表1(ID,Word)中的值('25','Pickles'),('74','sarment'),('85','Relish'),('34','Dill'),('23','Butter'),('22','Hot'),('3','Pickle');在表2中插入(ID,LinkID)值('25','34'),('25','23'),('74','22'),('85','3')