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

PHP中按值/键删除数组元素出现Undefined offset错误如何解决

报错原因

Undefined offset: 46报错是因为你直接通过$ary[$value_to_remove]取数组元素时,没有判断这个键是否真的存在于数组中,当目标值没有作为数组的键出现时,就会触发偏移不存在的错误。

你原本的实现逻辑也不符合需求:你只是手动取了两个元素塞到结果里,没有做通用的过滤逻辑,一旦数组长度、键值结构变化就会出错。

正确实现代码

根据你给出的输入输出示例,你需要把关联数组的所有键、值合并后,过滤掉等于目标值的元素,最终返回连续索引的数组,实现代码如下:

$ary = Auth::user()->friends()->pluck('user_id')->toArray();
$value_to_remove = Auth::id();

// 合并数组的键和值为一个一维数组
$mergeList = array_merge(array_keys($ary), array_values($ary));
// 过滤掉目标值,重置数组索引
$output = array_values(array_filter($mergeList, function($item) use ($value_to_remove) {
    return $item !== $value_to_remove;
}));

如果你的PHP版本在7.4以上,可以用箭头函数简化过滤逻辑:

$output = array_values(array_filter($mergeList, fn($item) => $item !== $value_to_remove));

执行后$output就是你需要的[8,7]结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:15:03