php - PHP中的foreach会破坏它下面的数组吗?
问题描述
我有一个数组来显示这样的年龄:
$list = [
['name' => 'Quan', 'age' => '20'],
['name' => 'Jyri', 'age' => '30'],
['name' => 'Jani', 'age' => '250']
];
然后,在 HTML 部分,我使用 foreach 检索它们。
<?php foreach($list as $list) { ?>
<h4><?php echo $list['name']; ?></h4>
<p><?php echo $list['age']; ?></p>
<?php }?>
代码运行成功,我得到了结果。现在我尝试创建一个函数来像这样大声说出我的名字。下面是 PHP 部分的代码。
function sayName($name = 'John') {
echo "Good morning, $name.";
}
下面是html部分。这运行成功
<?php sayName($list[1]['name']);?>
然后我像这样将它们结合在一起(html部分)。
<?php foreach($list as $list) { ?>
<h4><?php echo $list['name']; ?></h4>
<p><?php echo $list['age']; ?></p>
<?php };
sayName($list[1]['name']);?>
我得到的错误是这个。
Notice: Undefined offset: 1 in ..\Playground\ Good morning, . PHP Notice: Undefined offset: 1 in ..\Playground\
请告诉我如何解决这个问题。谢谢你。这是完整的代码:PHP Playground。
P/s:我的问题与这个问题不重复,因为在我的问题中,我已经初始化了数组。
解决方案
您不应该使用数组的名称作为值 doring foreach 的变量名称。代替:
<?php foreach($list as $list) { ?>
<h4><?php echo $list['name']; ?></h4>
<p><?php echo $list['age']; ?></p>
<?php }?>
尝试:
<?php foreach($list as $element) { ?>
<h4><?php echo $element['name']; ?></h4>
<p><?php echo $element['age']; ?></p>
<?php }?>