PHP JSON - 具有来自PHP数组的JSON输出的相同键

时间:2014-07-17 14:26:43

标签: javascript php arrays json

有没有办法将PHP数组(或任何其他类似的PHP对象)编码为JSON,同时具有相同的JSON数组键?

以下是一个例子:

{"categories" : [ {"key": "data1"}, {"key": "data2"}, {"key": "data3" } ] }

请注意"类别" object是一个可以使用for循环简单解析的数组。 但是,在PHP中,它似乎不可能在关联数组中具有相同的键。所以我不能将上面的结构作为json_encode的结果,我必须得到" key1"," key2"," key3",其中阻止我在Javascript中使用for循环简单地解析它。

编辑:修正了JSON语法 EDIT2:所有数据都不同。钥匙是相同的。

3 个答案:

答案 0 :(得分:1)

使用php json_encode()函数将PHP数组转换为JSON字符串。

反转:json_decode()

示例:

<?php

$json = '{"categories" : { "key1": {"first":"1. value"}, "key2": "data", "key3": "data" } }';

$array = json_decode($json,true);
echo "<pre>";
print_r($array);
echo "</pre>";

将输出:

Array
(
    [categories] => Array
        (
            [key1] => Array
                (
                    [first] => 1. value
                )

            [key2] => data
            [key3] => data
        )

)

答案 1 :(得分:0)

$array = [
    'categories' => [
        ['key' => 'data'],
        ['key' => 'data'],
        ['key' => 'data']
    ]
];

echo json_encode($array);

这与JSON中的数组结构相同。 JSON与PHP有关的唯一密钥规则相同。

(这里使用PHP 5.4+数组语法。)

答案 2 :(得分:0)

应该是直截了当的:

echo json_encode([
  'categories' => [
    ['key' => 'data'],
    ['key' => 'data'],
    ['key' => 'data'],
  ],
]);

此外,您可以通过执行以下操作简单地对结构进行反向工程:

$str = '{"categories" : [ {"key": "data1"}, {"key": "data2"}, {"key": "data3" } ] }';
$arr = json_decode($str);

var_export($arr);