PHP代码输出异常求助:如何修正代码实现预期输出?
帮你修正PHP代码的问题
嘿,刚看了你的代码,问题出在foreach的用法和数组访问上,我一步步给你讲清楚:
首先,原代码的错误点
- foreach变量理解错了:你写的
foreach ($people as $name => $intelligence)里,$name其实是数组的索引值(0、1、2、3),不是人名;$intelligence才是每个包含名字和描述的子数组。而且你的循环体是空的{},所以循环结束后,$name会保留最后一个索引3,$intelligence变成最后一个子数组["Emmanuel", "dumb"]。 - 数组访问写错了:你echo里的
$name [0][0]完全不对——$name是整数3,PHP会把它转成字符串"3",$name[0]就是"3",再套[0]还是"3";而$intelligence[0][1]是取子数组第一个元素"Emmanuel"的第二个字符(索引从0开始),也就是"m",这就是你看到奇怪输出的原因。
解决方案
如果你只想输出第一个结果(John is smart)
根本不需要循环,直接访问数组的第一个子数组就行:
<?php $people = [ ["John", "smart"], ["Mike", "dumb"], ["Jose", "smart"], ["Emmanuel", "dumb"] ]; // 直接取第一个子数组的名字和描述 echo $people[0][0] . " is " . $people[0][1]; ?>
如果想遍历输出所有人的信息
正确使用foreach遍历每个子数组:
<?php $people = [ ["John", "smart"], ["Mike", "dumb"], ["Jose", "smart"], ["Emmanuel", "dumb"] ]; // $person代表每个子数组,直接取它的第0位(名字)和第1位(描述) foreach ($people as $person) { echo $person[0] . " is " . $person[1] . "<br>"; // <br>用来换行,方便查看结果 } ?>
小提示
新手刚开始写PHP数组容易搞混索引和元素值,记得:
- 索引数组的
foreach ($arr as $key => $value)里,$key是索引(数字或字符串),$value是对应位置的元素; - 访问多维数组时,要一层一层来,比如
$people[0][0]就是第一个子数组的第一个元素。
内容的提问来源于stack exchange,提问作者overfl0w
相关产品推荐
相关产品推荐

