首页 > 解决方案 > 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:我的问题与这个问题不重复,因为在我的问题中,我已经初始化了数组。

标签: phparrays

解决方案


您不应该使用数组的名称作为值 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 }?>

推荐阅读