PHP中的foreach会破坏它下面的数组吗?
我有一个数组来显示年龄,如下所示:PHP中的foreach会破坏它下面的数组吗?,php,arrays,Php,Arrays,我有一个数组来显示年龄,如下所示: $list = [ ['name' => 'Quan', 'age' => '20'], ['name' => 'Jyri', 'age' => '30'], ['name' => 'Jani', 'age' => '250'] ]; 然后,在HTML部分,我使用foreach检索它们 <?php foreach($list as $list) { ?> <h4&g
$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 }?>
下面是html部分。这是成功的
<?php sayName($list[1]['name']);?>
请告诉我如何解决这个问题。非常感谢。
以下是完整代码:
p/s:我的问题与重复,因为在我的问题中,我已经初始化了数组。您不应该使用数组的名称作为doring foreach值的变量名。而不是:
<?php foreach($list as $list) { ?>
<h4><?php echo $list['name']; ?></h4>
<p><?php echo $list['age']; ?></p>
<?php }?>
尝试:
您正在循环父元素,考虑到其子元素的意思是$list
循环$list
,因此它不会工作
<?php foreach ($list as $list1) {?>
<h4>
<?php echo $list1['name']; ?>
</h4>
<p>
<?php echo $list1['age']; ?>
</p>
<?php
sayName($list1['name']);
}
?>
</body>
如果你在循环中写,它对每个名字都有效
您的已更新。实际上,您的数组
$list
被同一变量$list
覆盖
如果打印此阵列:
$list = [
['name' => 'Quan', 'age' => '20'],
['name' => 'Jyri', 'age' => '30'],
['name' => 'Jani', 'age' => '250']
];
这将返回以下结果:
Array
(
[0] => Array
(
[name] => Quan
[age] => 20
)
[1] => Array
(
[name] => Jyri
[age] => 30
)
[2] => Array
(
[name] => Jani
[age] => 250
)
)
print_r($list);
但是,在这个循环之后:
<?php foreach($list as $list) { ?>
<h4><?php echo $list['name']; ?></h4>
<p><?php echo $list['age']; ?></p>
<?php }?>
这将明确地为未定义的偏移量提供通知
,因为如果您使用print\r检查数组,将得到以下结果:
Array
(
[0] => Array
(
[name] => Quan
[age] => 20
)
[1] => Array
(
[name] => Jyri
[age] => 30
)
[2] => Array
(
[name] => Jani
[age] => 250
)
)
print_r($list);
结果:
Array
(
[name] => Jani
[age] => 250
)
所以解决方案是,在循环中调用函数,并更改值的变量名,如:
<?php foreach($list as $value) { // change this line ?>
<h4><?=sayName($value['name']);?></h4>
<?php }?>
您在循环中可能会覆盖$list
。将其更改为foreach($l列表)
,并在循环中使用$l
而不是$list
。谢谢。现在可以了。而且,回到我以前的组合,当我把它改为sayName($list['name'),它起作用了,但它显示了Jani,阵列中的最后一个人。真奇怪。
print_r($list);
Array
(
[name] => Jani
[age] => 250
)
<?php foreach($list as $value) { // change this line ?>
<h4><?=sayName($value['name']);?></h4>
<?php }?>