PHP数组去重后如何修改输出格式?重置索引并转为无键格式
问题描述
我有如下PHP代码:
$id_utt1 = explode(',', $_GET['arr']); $id_utt = array_unique($id_utt1); var_dump($id_utt);
执行后输出的数组带有非连续键名:
array(24) { [0]=> string(3) "560" [6]=> string(3) "515" [12]=> string(3) "620" [14]=> string(3) "544" [15]=> string(3) "674" [16]=> string(3) "602" [22]=> string(3) "745" [25]=> string(3) "755" [29]=> string(3) "522" [31]=> string(3) "545" [32]=> string(3) "555" [33]=> string(3) "562" [34]=> string(3) "563" [35]=> string(3) "573" [36]=> string(3) "584" [39]=> string(3) "643" [41]=> string(3) "696" [42]=> string(3) "698" [43]=> string(3) "699" [44]=> string(3) "700" [45]=> string(3) "709" [46]=> string(3) "730" [47]=> string(3) "735" [49]=> string(3) "590" }
但我需要将数组处理为连续索引的无键名格式,示例如下:
[560,515,620,544,674,602,745,755,522,545,555,562,563,573,584,643,696,698,699,700,709,730,735,590]
解决方案
方式一:重置索引后用JSON输出
array_unique 会保留原数组的键名,导致索引不连续。可以用 array_values() 重置数组索引为连续数字,再通过 json_encode() 直接输出目标格式:
$id_utt1 = explode(',', $_GET['arr']); $id_utt = array_unique($id_utt1); // 重置数组索引为连续序列 $id_utt = array_values($id_utt); // 输出为符合要求的数组格式 echo json_encode($id_utt);
方式二:手动拼接字符串
如果不想依赖JSON函数,也可以手动遍历拼接成目标字符串:
$id_utt1 = explode(',', $_GET['arr']); $id_utt = array_unique($id_utt1); // 先重置索引 $id_utt = array_values($id_utt); // 拼接成目标格式字符串 $result = '[' . implode(',', $id_utt) . ']'; echo $result;
内容的提问来源于stack exchange,提问作者Bruno
相关产品推荐
相关产品推荐

