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
内部移动了一行。