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

PHP多维数组定义报错(illegal offset error)与获取数组最小值及对应键名问题

嘿,我来帮你搞定这两个问题!咱们一个一个来拆解解决:

问题1:二维数组定义错误导致的illegal offset error

你当前的数组写法存在语法和逻辑双重问题:

  • 语法上,PHP关联数组的正确格式是键 => 值,你错误地把键用["Monday"]包裹,这会被解析成索引数组而非关联键;
  • 逻辑上,你根本不需要二维数组——你要存储的是「星期名称→对应数值」的映射,一维关联数组完全足够,套额外的数组层反而会导致后续操作出现偏移量错误。

给你修正后的正确数组定义:

// 直接定义一维关联数组,键为星期名称,值为对应的请求参数
$x = [
    "Monday" => $_REQUEST["Monday"],
    "Tuesday" => $_REQUEST["Tuesday"],
    "Wednesday" => $_REQUEST["Wednesday"],
    "Thursday" => $_REQUEST["Thursday"],
    "Friday" => $_REQUEST["Friday"],
    "Saturday" => $_REQUEST["Saturday"],
    "Sunday" => $_REQUEST["Sunday"]
];

这样定义后,数组结构清晰,也不会再触发非法偏移量错误。

问题2:获取最小值对应的键名

针对这个需求,有两种常用实现方式,你可以根据场景选择:

方式一:用内置函数快速获取第一个最小值的键

如果你的数组中最小值唯一,或者只需要第一个出现的最小值对应键,直接用min()+array_search()组合即可:

// 获取数组中的最小值
$minValue = min($x);
// 查找最小值对应的键名
$minDay = array_search($minValue, $x);

// 输出结果,比如当Monday值最小时,会输出"Monday"
echo "数值最小的星期是:" . $minDay;

方式二:遍历数组获取所有最小值的键

如果存在多个星期对应同一个最小值,想要把所有符合条件的键都找出来,可以用遍历实现:

$minValue = min($x);
$minDays = [];

// 遍历数组,收集所有值等于最小值的键
foreach ($x as $day => $value) {
    if ($value == $minValue) {
        $minDays[] = $day;
    }
}

// 输出所有符合条件的星期
echo "数值最小的星期有:" . implode(", ", $minDays);

内容的提问来源于stack exchange,提问作者RetSIN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:27:37