【问题标题】:Encode array to JSON string without array indexes将数组编码为没有数组索引的 JSON 字符串
【发布时间】:2015-01-29 17:17:41
【问题描述】:

我从 Javascript 向数据库发送一个 JSON 字符串,语法如下:

["Product1","Product2","Product3"]

之前我只是将这些数据放在我的数据库中而不用php对其进行解码,并且在检索后再次使用它时它可以正常工作。

但是现在我需要对字符串中的数据进行一些更改,所以我在 PHP 中对其进行解码,这将产生一个如下所示的数组:

print_r(json_decode($_POST["myjsonstring"]));
//outputs
//Array
//(
//    [0] => Product1
//    [2] => Product2
//    [3] => Product3
//)

我的问题是,当我将此数组编码回 JSON 时,字符串的格式如下:

{"0":"Product1","2":"Product2","3":"Product3"}

我需要编码的字符串与我的 javascript 创建的字符串相同,因此没有数组索引。有没有简单的方法可以做到这一点?

【问题讨论】:

  • 为什么数组中缺少索引?我认为您没有显示所有涉及该数组的代码。如果您没有一组连续的数字索引值,则 json_encode 过程会将其视为关联数组并编码为对象表示法而不是数组表示法。

标签: php arrays json


【解决方案1】:

你想要 PHP 的 array_values() 函数:

$json_out = json_encode(array_values($your_array_here));

【讨论】:

  • $json_out = json_encode(array_values($your_array_here));
  • 把这个例子放在你的答案中。
  • 不过,缺失的索引可能很重要。
  • 我很难过。 manual 表示 array_values() 函数“返回一个 INDEXED 值数组。”当我执行$array2 = array_values($array1) 时,两个数组都继续包含这种格式的索引:[0] =>
  • 索引数组是数字索引的数组。根据手册,“array_values() 返回数组中的所有值并以数字方式索引数组。”或者你的意思是所有的值都是空的/空白的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多