当前位置: 首页 > 面试题库 >

json_encode()问题

郭元凯
2023-03-14
问题内容

我有一个简单的数组:

array
  0 => string 'Kum' (length=3)
  1 => string 'Kumpel' (length=6)

当我使用json_encode()对数组进行编码时,我得到以下信息:

["Kum","Kumpel"]

我的问题是,获得["Kum","Kumpel"] 替代的原因是什么{ "0" : "Kum", "1" : "Kumpel" }


问题答案:

“ {}”括号指定一个对象,“
[]”用于根据JSON规范的数组。从内存分配的角度来看,数组没有枚举。只是数据后面跟随着更多的数据,另一方面,对象具有带有名称的属性,并且数据已分配给这些属性,因此,要对此类对象进行编码,还必须传递正确的属性名称。但是对于数组,您不需要指定索引,因为它们始终为0..n,其中n是数组的长度-1,唯一重要的是数据的顺序。

$array = array("a","b","c");
json_encode($array); // ["a","b","c"]
json_encode($array, JSON_FORCE_OBJECT); // {"0":"a", "1":"b","2":"c"}

JSON_FORCE_OBJECT使其使用“
0,1,2”的原因是因为要分配数据以使对象必须将其分配给属性,因为开发人员未提供属性名称(仅数据),编码器使用数组索引作为属性名称,因为这些是唯一有意义的名称。

注意:根据 PHP手册,options参数仅在PHP 5.3中可用。

对于较旧的PHP版本,请参考chelmertz的答案以获取使json_encode使用索引的方法。



 类似资料:
  • 问题内容: 这不是一个问题,因为更多的是要意识到。我更新了一个使用PHP7.1.1 的应用程序,然后看到一个问题,即浮点数被更改为有时会扩展到17位数字。根据文档,在对双精度值进行编码时,PHP 7.1.x开始使用而不是精度。我猜这引起了一个示例值 472.185 成为 472.18500000000006 那个价值过去了。自发现以来,我已恢复为PHP 7.0.16,不再遇到问题。在还原到PHP

  • 问题内容: 我从包含德国变音符号的数据库中获取数据时遇到麻烦。基本上,每当我收到包含变音符号的数据时,它都是带有问号的黑色正方形。我通过把 查询之前。 问题是,一旦我对查询结果使用,则包含umlaut的值会得到。我可以通过直接在浏览器中调用php文件来看到这一点。除了在编码为JSON并将其解码为JS之前替换此字符之外,还有其他解决方案吗? 问题答案: 您可能只想以某种方式在浏览器中显示文本,因此一

  • 问题内容: 由于某种原因,“描述”项将返回以下代码: 这是我的数据库的架构: 这是页面上呼应的内容: 有任何想法吗? 问题答案: 我敢打赌,您正在以非utf8编码检索数据:请尝试在查询之前输入。

  • 问题内容: 为什么用显示器输出该日期? 如何转换为? 问题答案: 在PHP 5.4中,可以使用: 否则,您必须进行一些琐碎的后处理 请注意,这是表示JSON 的有效方法。

  • 问题内容: 我有一个简单的,我想在json中编码。 问题答案:

  • 问题内容: Array ( [sEcho] => 1 [iTotalRecords] => 7521 [iTotalDisplayRecords] => 1 [aaData] => Array ( [0] => Array ( [0] => Nordic Capital Buys SiC Processing [1] => 2010-06-21/nordic-capital-buys-sic-pr