PHP创建多维数组
我正在尝试使用foreach循环在PHP中创建多维数组。以下是迄今为止的代码:PHP创建多维数组,php,multidimensional-array,Php,Multidimensional Array,我正在尝试使用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)
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;
}
for($day1=$day;$day1$day1)
$train=$train_xpath->query('//li/div/div[contains(@class,“smallFont-farelist”)]);
如果($train->length>0)
{
foreach($f列)
{
$time\u s=$train\u xpath->evaluate($string(./div[@class=“train time”]]/text()[1]),$f);
$time\u e=$train\u 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\u no'=>$train\u xpath->evaluate($string(./div[@class=“train no”]),$f),
“出发时间”=>“$time”,
“到达时间”=>“$time\u e”,
“价格”=>美元票价);
}
}
$train_list['option'][]=$option;
}
希望它有帮助