我正在学习在线PHP课程,现在我正尝试自己做一些练习。
我尝试从头开始编写一个foreach循环,该循环应该打印出一个简单的HTML,但是我遇到了问题。
从我的代码中可以看到,我已将$ popDiv指定为变量,以回显城市中的男性和女性人数。
问题是,如果我在$ popDiv上执行var_dump,它将仅显示数组中的最后一个键。 array(1){[“ Females”] => int(12)}。
在这里希望有人可以帮助我解决问题,但主要是了解修复它背后的逻辑。
谢谢!
$cities =
[
[
'id' => 1,
'name' => 'Rome',
'Nation' => 'Italy',
'Population' =>
[
['Males' => 20],
['Females' => 1]
],
'Total Population' => 20
],
[
'id' => 2,
'name' => 'Milan',
'Nation' => 'Italy',
'Population' =>
[
['Males' => 20],
['Females' => 50]
],
'Total Population' => 70
],
[
'id' => 3,
'name' => 'Naples',
'Nation' => 'Italy',
'Population' =>
[
['Males' => 10],
['Females' => 5]
],
'Total Population' => 15
],
[
'id' => 4,
'name' => 'Lugano',
'Nation' => 'Swiss',
'Population' =>
[
['Males' => 50],
['Females' => 12]
],
'Total Population' => 62
],
];
foreach ($cities as $id => $city) {
echo "<p>The city of {$city['name']} is located in {$city['Nation']} and has a population of {$city['Total Population']} inhabitants, divided between </p>";
foreach ($city['Population'] as $popDiv)
{
echo "{$popDiv['Males']} males and {$popDiv['Females']} 5 females</p>";
}
}
var_dump($popDiv);
我期望的是这样的:
罗马市位于意大利,人口20名,男性20,女性1。
米兰市位于意大利,人口70多人,分为20位男性和50位女性。
那不勒斯市位于意大利,人口15人,男性10例,女性5例。
卢加诺(Lugano)市位于瑞士,人口62名,其中男性为50,女性为12。
答案 0 :(得分:0)
$ popDiv在数组的每个循环上都被覆盖,这就是为什么它仅向您显示数组的最后一个循环。
foreach ($cities as $id => $city) {
echo "<p>The city of " . $city['name'] . " is located in " . $city['Nation'] . " and has a population of " . $city['Total Population'] . " inhabitants, divided between " . $city['Population'][0]['Males'] . " males and " . $city['Population'][0]['Females'] . " 5 females</p>";
}
答案 1 :(得分:0)
无需遍历$city['Population']
,只需直接使用其值即可:
foreach ($cities as $id => $city) {
echo "<p>The city of {$city['name']} is located in {$city['Nation']} and has a population of {$city['Total Population']} inhabitants, divided between </p>";
echo "{$city['Population'][0]['Males']} males and {$city['Population'][1]['Females']} females</p>";
}