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

多维数组的JSON_ENCODE提供不同的结果

胡夕
2023-03-14
问题内容

当在PHP中对多维数组进行json_encode编码时,我只是通过命名一个数组而不是不命名它们来注意到一个不同的输出。例如:

$arrytest = array(array('a'=>1, 'b'=>2),array('c'=>3),array('d'=>4));
json_encode($arrytest)

给出多个json对象的单个数组

[{"a":1,"b":2},{"c":3},{"d":4}];

而只需为中间数组分配一个名称

$arrytest = array(array('a'=>1, 'b'=>2),"secondarray"=>array('c'=>3),array('d'=>4));
json_encode($arrytest)

创建一个带有多个json对象的单个json对象

{"0":{"a":1,"b":2},"secondarray":{"c":3},"1":{"d":4}};

为什么第一个选项不返回与第二个执行点相同的结果,并用“ 1”代替“ secondarray”


问题答案:

在JSON中,[]只有每个数组都有数字键,而对象则{}具有字符串属性。在第二个示例中,如果包含数组键,则必然迫使整个外部结构成为对象。由于包含字符串键,因此两个示例的内部对象都被制成对象a,b,c,d

如果要JSON_FORCE_OBJECT在第一个示例中使用该选项,则应返回与第二个示例类似的结构,而外部结构是对象而不是数组。如果未指定您希望将其作为对象,则外部数组中不存在字符串键会导致PHP假定将其编码为JSON中的等效数组结构。

$arrytest = array(array('a'=>1, 'b'=>2),array('c'=>3),array('d'=>4));

// Force the outer structure into an object rather than array
echo json_encode($arrytest , JSON_FORCE_OBJECT);

// {"0":{"a":1,"b":2},"1":{"c":3},"2":{"d":4}}


 类似资料:
  • 问题内容: 我只是有一个想法可以测试一些东西,并且有效: 输出显然是: 所以我的问题是: 这是好是坏的编码风格? 这有什么好处? 最重要的是,是否可以在声明本身中创建这样的构造? 另外…为什么甚至有可能做? 问题答案: 这是好是坏的编码风格? 像任何东西一样,这取决于情况。在某些情况下, 锯齿状数组 (称为它们)实际上是适当的。 这有什么好处? 好吧,用于将不同长度的数据集存储在一个数组中。例如,

  • 问题内容: 我正在尝试通过HTTP将SHA256哈希字符串发送到服务器,在服务器上我想通过执行SHA256哈希并验证两者的匹配来进行身份验证。出于测试目的,我使用相同的字符串,但是结果不匹配。可以使用base64_encode调用的默认编码方案吗?谢谢。 在PHP中,我正在做: 在Go中,我正在做 问题答案: 过了一会儿我就知道了。我都将其标准化为十六进制编码。为此,我将代码更改如下: PHP:

  • 我正在尝试在Kotlin中实现通用二维数组提供程序: 但却不知道如何克服这个问题。 编译器说:类型接口失败:没有足够的信息来推断构造函数Array中的参数T(size: Int, init:(Int)→T)请显式指定。

  • 问题内容: 我具有以下列数据的关联数组: 我需要将结构转置/旋转为行数组(将合并的列数据分配给它们各自的行)。我不需要结果中的列名。 预期产量: 问题答案: 正如Kris Roofe在删除的答案中所说,的确是一种更为优雅的方法。只要确保将其放入某种循环中即可,就像Sahil Gulati向您展示的那样。例如,像这样: 的输出正是您要寻找的

  • 我正在使用代码优先和EF6创建一个小项目,但现在我面临一个问题: 如果一个实体有一个自动ID PK,并且例如3个实体(ID:1,ID:2,ID:4-Id3已删除),那么克隆上下文将具有(ID:1,ID:2,ID:3)的实体。 我的问题是:有没有办法强制AI PK的值,或者至少强制跳过ID?或者,是否有通过dbcontexts将数据库复制到另一个数据库的最佳方法? 我在这里发现了一篇关于编程生成ID

  • 问题内容: 我有一个要转换为Python的Java小问题。因此,我需要一个多维数组。在Java中,它看起来像: 其他值将在bei循环中创建并写入数组。 如何实例化数组? PS:不涉及矩阵乘法… 问题答案: 您可以使用嵌套列表创建它: 如果必须动态的话,它会更加复杂,为什么不自己编写一个小类呢? 可以这样使用: 我敢肯定,可以更有效地实施它。:) 如果您需要多维数组,则可以创建一个数组并计算偏移量,