PHP数组元素移除问题:移除指定值后输出不符合预期
解决PHP移除数组元素后JSON结构不符合预期的问题
你的代码存在两个核心问题:
- 仅处理了
done数组,但最终没有将原结构中的skip和left字段保留到输出中; - 使用
array_flip的方式移除元素后,数组索引变得不连续,json_encode会将其转换为带键名的对象而非纯数组。
以下是修正后的代码:
<?php include "db_connect.php"; $sql2 = "SELECT * FROM ads WHERE campaign_id=132"; $res2 = mysqli_fetch_assoc(mysqli_query($conn,$sql2)); $done = json_decode($res2["done_by"]); // 保留原有的完整对象结构 // 定义要移除的目标值 $target = 1670937087; // 查找目标值在done数组中的索引 $index = array_search($target, $done->done); // 找到索引后执行移除操作 if ($index !== false) { unset($done->done[$index]); // 重新索引数组,确保JSON输出为纯数组格式 $done->done = array_values($done->done); } // 编码整个对象,保留done/skip/left的完整结构 $json = json_encode($done); print($json); ?>
代码说明:
- 直接操作原
$done对象,无需额外拆分重组,确保保留skip和left字段; - 使用
array_search精准定位要移除元素的索引,避免误操作; array_values重新整理数组索引,让json_encode输出为连续索引的数组(而非带键名的对象);- 最终编码整个对象,输出结构与预期完全一致。
内容的提问来源于stack exchange,提问作者JOBIANS TECHIE
相关产品推荐
相关产品推荐

