PHP创建多维数组

khalid as

我正在尝试使用foreach循环在PHP中创建多维数组。这是到目前为止的代码:

for($day1=$day; $day1<=2; $day1++)
{
$train_list['option'][] = array('day' => $day1);
$train = $train_xpath->query('//li/div/div[contains(@class, "smallFont farelist")]');
if($train->length > 0)
{
    foreach($train as $f) 
    {
        $time_s =  $train_xpath->evaluate('string(./div[@class="train-time"]/text()[1])', $f);
        $time_e =  $train_xpath->evaluate('string(./div[@class="train-time"]/text()[2])', $f);
        $fare = $train_xpath->evaluate('string(./div[@class="train-info"]/div/div[@class="total-price"])', $f);
        $train_list['option'][0]["value"][]=  array('train_no' => $train_xpath->evaluate('string(./div[@class="train-no"])', $f),
                                                     'departure_time' => "$time_s ",
                                                     'arrival_time' => "$time_e ",
                                                     'price' => $fare );

                    }
}
}

此代码的输出如下所示:

    Array
(
    [option] => Array
        (
            [0] => Array
                (
                    [day] => 1
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [train_no] => D7  372
                                    [departure_time] => 10:00 
                                    [arrival_time] => 14:40 
                                    [price] =>  69.00
                                )

                            [1] => Array
                                (
                                    [train_no] => D7  376
                                    [departure_time] => 17:45 
                                    [arrival_time] => 22:25 
                                    [price] =>  59.00
                                )

                        )

                )

            [1] => Array
                (
                    [day] => 2
                )

        )

)

但是,这不是目的。所需的数组应如下所示:

Array
(
    [option] => Array
        (
            [0] => Array
                (
                    [day] => 1
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [train_no] => D7  372
                                    [departure_time] => 10:00 
                                    [arrival_time] => 14:40 
                                    [price] =>  59.00
                                )

                            [1] => Array
                                (
                                    [train_no] => D7  376
                                    [departure_time] => 17:45 
                                    [arrival_time] => 22:25 
                                    [price] =>  49.00
                                )

                        )

                )

            [1] => Array
                (
                    [day] => 2
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [train_no] => D7  372
                                    [departure_time] => 10:00 
                                    [arrival_time] => 14:40 
                                    [price] =>  59.00
                                )

                            [1] => Array
                                (
                                    [train_no] => D7  376
                                    [departure_time] => 17:45 
                                    [arrival_time] => 22:25 
                                    [price] =>  69.00
                                )

                        )

                )

        )

)

如何修改代码以实现目标?

凯文

您将覆盖索引0。为了不这样做,并用未知数量的条目填充数组,您需要首先构建条目,然后分配给数组的下一个值。如果您知道条目数,则可以使用计数器并通过该索引访问数组。

试试这个:

for($day1=$day; $day1<=2; $day1++)
{
    $option = array('day' => $day1)
    $train = $train_xpath->query('//li/div/div[contains(@class, "smallFont farelist")]');
    if($train->length > 0)
    {
        foreach($train as $f) 
        {
            $time_s =  $train_xpath->evaluate('string(./div[@class="train-time"]/text()[1])', $f);
            $time_e =  $train_xpath->evaluate('string(./div[@class="train-time"]/text()[2])', $f);
            $fare = $train_xpath->evaluate('string(./div[@class="train-info"]/div/div[@class="total-price"])', $f);
            $option["value"][]=  array('flight_no' => $train_xpath->evaluate('string(./div[@class="train-no"])', $f),
                                                         'departure_time' => "$time_s ",
                                                         'arrival_time' => "$time_e ",
                                                         'price' => $fare );

                        }
    }
    $train_list['option'][] = $option;
}

希望能有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章