PHP foreach循环练习

时间:2019-07-09 10:40:04

标签: php foreach

我正在学习在线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。

2 个答案:

答案 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>"; 
}