You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP代码输出异常求助:如何修正代码实现预期输出?

帮你修正PHP代码的问题

嘿,刚看了你的代码,问题出在foreach的用法和数组访问上,我一步步给你讲清楚:

首先,原代码的错误点

  1. foreach变量理解错了:你写的foreach ($people as $name => $intelligence)里,$name其实是数组的索引值(0、1、2、3),不是人名;$intelligence才是每个包含名字和描述的子数组。而且你的循环体是空的{},所以循环结束后,$name会保留最后一个索引3,$intelligence变成最后一个子数组["Emmanuel", "dumb"]。
  2. 数组访问写错了:你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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:55:44