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

如何删除PHP数组元素后重新排序自定义键名?

解决方法

首先纠正你代码里的一个小错误:unset($key) 不会删除数组里的元素,你需要用 unset($user_list[$key]) 才能真正移除目标元素。

接下来分两步实现你的需求:

步骤1:删除指定user_id的元素

先正确删除匹配的元素,代码如下:

$user_list = [
    "user_1" => ["user_id" => 1234],
    "user_2" => ["user_id" => 1324],
    "user_3" => ["user_id" => 3321]
];
$user_id = 1324; // 要删除的user_id

foreach($user_list as $key => $value){
    if($value["user_id"] == $user_id){
        unset($user_list[$key]); // 操作原数组的键才能删除元素
    }
}

步骤2:重新生成有序的键名

删除元素后,数组的键会变成user_1、user_3这种不连续的状态,我们需要重新生成user_1、user_2这样的顺序键。可以先提取数组的所有值,再循环重新赋值新键:

// 提取删除后的数组值,此时会生成索引从0开始的连续数组
$new_users = array_values($user_list);
// 重新构建带有序键的数组
$user_list = [];
foreach($new_users as $index => $user){
    $user_list["user_" . ($index + 1)] = $user;
}

完整代码

把两步合并起来就是完整的解决方案:

$user_list = [
    "user_1" => ["user_id" => 1234],
    "user_2" => ["user_id" => 1324],
    "user_3" => ["user_id" => 3321]
];
$user_id = 1324; // 目标删除的user_id

// 删除指定元素
foreach($user_list as $key => $value){
    if($value["user_id"] == $user_id){
        unset($user_list[$key]);
    }
}

// 重新排列键名
$new_users = array_values($user_list);
$user_list = [];
foreach($new_users as $i => $user){
    $user_list["user_" . ($i + 1)] = $user;
}

// 输出结果
print_r($user_list);

执行后就能得到你想要的结果:

Array
(
    [user_1] => Array
        (
            [user_id] => 1234
        )

    [user_2] => Array
        (
            [user_id] => 3321
        )

)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:20:43