如何移除数组索引?PHP数组转JSON时去除0、1、2键名需求
解决PHP数组转JSON时去除数字索引的问题
我来帮你搞定这个需求,其实核心就是确保你的子数组在转JSON时是以数组形式输出,而不是带数字键的对象。下面分步骤给你讲具体实现:
1. 理解问题本质
你手里的PHP数组本身就是索引数组(0、1、2作为键),但如果直接转JSON时出现了带数字键的对象,大概率是数组索引不连续导致的。我们需要把它转换成连续索引的纯数组,这样json_encode就会输出无键名的JSON数组。
2. 处理PHP数组
用array_values()函数可以重置数组的索引,提取所有子数组的值并重新建立从0开始的连续索引,这样就相当于“移除”了原来的数字索引,让子数组直接包含在主数组里。
示例代码:
// 你的原始购物车数组 $originalCart = [ [ 'cart_id' => 71, 'product_id' => 33, 'u_id' => 7, 'size' => 'medium', 'color' => 'blue', 'quantity' => 1, 'vendor_id' => 4, 'country_id' => 1, 'product_category' => 1, 'product_name' => 'Black Dress', 'short_description' => 'Flying Doll Black Dress', 'detail_description' => 'lorem ipsum', 'price' => 2000, 'special_price' => 2000 ], [ 'cart_id' => 74, 'product_id' => 37, 'u_id' => 7, 'size' => 'medium', 'color' => 'blue', 'quantity' => 1, 'vendor_id' => 4, 'country_id' => 1, 'product_category' => 3, 'product_name' => 'Pink Skirt', 'short_description' => 'Lady Shop Skirt combo', 'detail_description' => 'lorem ipsum', 'price' => 3000, 'special_price' => 2100 ], [ 'cart_id' => 72, 'product_id' => 46, 'u_id' => 7, 'size' => 'medium', 'color' => 'blue', 'quantity' => 2, 'vendor_id' => 4, 'country_id' => 1, 'product_category' => 1, 'product_name' => 'Chirag', 'short_description' => 'Hello guys', 'detail_description' => 'How r u', 'price' => 200, 'special_price' => 120 ] ]; // 重置数组索引,确保是连续的纯索引数组 $processedCart = array_values($originalCart);
3. 生成符合要求的JSON输出
把处理后的数组放到响应的data字段里,然后输出JSON即可:
// 构建响应结构 $response = [ 'data' => $processedCart ]; // 设置响应头并输出JSON header('Content-type: application/json'); echo json_encode($response);
4. 最终JSON效果
生成的JSON会是这样的,data字段下是纯数组,没有0、1、2这些键名:
{ "data": [ { "cart_id": 71, "product_id": 33, "u_id": 7, "size": "medium", "color": "blue", "quantity": 1, "vendor_id": 4, "country_id": 1, "product_category": 1, "product_name": "Black Dress", "short_description": "Flying Doll Black Dress", "detail_description": "lorem ipsum", "price": 2000, "special_price": 2000 }, { "cart_id": 74, "product_id": 37, "u_id": 7, "size": "medium", "color": "blue", "quantity": 1, "vendor_id": 4, "country_id": 1, "product_category": 3, "product_name": "Pink Skirt", "short_description": "Lady Shop Skirt combo", "detail_description": "lorem ipsum", "price": 3000, "special_price": 2100 }, { "cart_id": 72, "product_id": 46, "u_id": 7, "size": "medium", "color": "blue", "quantity": 2, "vendor_id": 4, "country_id": 1, "product_category": 1, "product_name": "Chirag", "short_description": "Hello guys", "detail_description": "How r u", "price": 200, "special_price": 120 } ] }
小提示
如果你的原始数组本来就是连续的数字索引(像你给出的例子那样),其实array_values()这一步可以省略,但加上它能避免因为后续数组操作(比如删除元素)导致索引不连续的问题,让代码更健壮。
内容的提问来源于stack exchange,提问作者Ravindra Vagadiya
相关产品推荐
相关产品推荐

