Php 如何将返回的MySQL结果生成多维数组?
到目前为止,我已经完成了这个阵列Php 如何将返回的MySQL结果生成多维数组?,php,mysql,arrays,Php,Mysql,Arrays,到目前为止,我已经完成了这个阵列 [1] => Array ( [name] => Test [stations] => Array ( [0] => Array ( [name] => Name [price] => 50.00
[1] => Array
(
[name] => Test
[stations] => Array
(
[0] => Array
(
[name] => Name
[price] => 50.00
[description] => Description
)
[1] => Array
(
[name] => Name Test
[price] => 135.00
[description] => Test
)
)
)
[2]=> Array
(
[name] => Test Name
[stations] => Array
(
[0] => Array
(
[name] => Name
[price] => 50.00
[description] => Description
)
)
我通过在嵌套的foreach循环中使用两个SQL查询来实现这一点。ID是一个POST值:system_
$systems = "SELECT * FROM `systems` AS sys WHERE `sys`.`p_id`=:id";
$systemNumber = 0;
$stationNumber = 0;
foreach ($systems as $system) {
$return[$systemNumber] = array(
'name' => $system['system_name']
);
$stations = "SELECT * FROM `stations` WHERE `system_id`=$system[system_id] AND `p_id` = :id";
foreach($stations as $station){
$stationsArray[$stationNumber] = array(
'name'=>$station['station_name'],
'price'=>$station['price'],
'description'=>$station['description'],
);
$return[$systemNumber]['stations'] = $stationsArray;
$stationNumber++;
}
$systemNumber++;
}
我遇到的问题是,它是在以前的阵列上建立站,这意味着阵列变成了这样
...
[stations]=> Array(
[0]=>...
[1]=>...
[2]=>...
[3]=>...
[4]=>...
)
如何使站点连接到相应的系统?问题在于环路 您正在将循环外部的变量设置为0
$systemNumber = 0;
$stationNumber = 0;
但是,在循环中,您需要将$StationArray重新启动为nothing,并将$stationNumber重新启动为0,否则,当您执行此操作时
foreach($stations as $station){
您将继续增加每个循环中$stationNumber的值
$systems = "SELECT * FROM `systems` AS sys WHERE `sys`.`p_id`=:id";
$systemNumber = 0;
$stationNumber = 0;
foreach ($systems as $system) {
$return[$systemNumber] = array(
'name' => $system['system_name']
);
$stations = "SELECT * FROM `stations` WHERE `system_id`=$system[system_id] AND `p_id` = :id";
$stationNumber = 0;
$stationsArray = array();
foreach($stations as $station){
$stationsArray[$stationNumber] = array(
'name'=>$station['station_name'],
'price'=>$station['price'],
'description'=>$station['description'],
);
$return[$systemNumber]['stations'] = $stationsArray;
$stationNumber++;
}
$systemNumber++;
}
$stationsArray=array()
就在foreach($stations as$station)之前{
你说得对。它现在正在工作。我刚把$stationNumber=0;
在foreach
内部移动了一行。