Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP数组更改为带有静态索引的JSON数组_Php_Arrays_Json - Fatal编程技术网

将PHP数组更改为带有静态索引的JSON数组

将PHP数组更改为带有静态索引的JSON数组,php,arrays,json,Php,Arrays,Json,我有以下由PHP生成的数组值 Array ( [1] => Array ( [2] => 12:00 [3] => 12:30 [4] => 13:00 [5] => 13:30 ) [2] => Array ( [2] => 12:00 [3] => 1

我有以下由PHP生成的数组值

Array
( [1] => Array
        (
            [2] => 12:00
            [3] => 12:30
            [4] => 13:00
            [5] => 13:30
        )
  [2] => Array
        (
            [2] => 12:00
            [3] => 12:30
            [4] => 13:00
            [5] => 13:30
            [6] => 14:00
        )
)
我想将其转换为带有静态索引的JSON数组值。 如果我使用echo json_encode array(“时隙”=>$arry)我会得到以下结果

"TimeSlots":{"2":{"2":"12:00","3":"12:30","4":"13:00","5":"13:30"},
         "3":{"2":"12:00","3":"12:30","4":"13:00","5":"13:30","6":"14:00"}}
但是我想显示json数组,其中静态索引称为slot,而不是1,2,3,3,, 我的预期输出应该如下所示

{
    "TimeSlots":{"2":[{"slot":"12:00"},{"slot":"12:30"},{"slot":"13:00"},{"slot":"13:30"}]},
                 "3":[{"slot":"12:00"},{"slot":"12:30"},{"slot":"13:00"},{"slot":"13:30"},{"slot":"14:00"}]}
}

我怎样才能做到这一点

如果您想要精确的输出,那么数组的索引不能从
2开始,因为这意味着它创建的json字符串将始终包含条目的键,这显然是您不希望在json字符串中包含的

如果数组从0开始并向上计数,则json中不会出现键:

$timeslots = array('Timeslots' => array(
    1 => array(
            array('slot'=>'12:00'),
            array('slot'=>'12:30'),
            array('slot'=>'13:00'),
            array('slot'=>'13:30')
         ),
    2 => array(
            array('slot'=>'12:00'),
            array('slot'=>'12:30'),
            array('slot'=>'13:00'),
            array('slot'=>'13:30'),
            array('slot'=>'14:00')
        )
    ),
);
创建以下json:

{"Timeslots":{"1":[{"slot":"12:00"},{"slot":"12:30"},{"slot":"13:00"},{"slot":"13:30"}],"2":[{"slot":"12:00"},{"slot":"12:30"},{"slot":"13:00"},{"slot":"13:30"},{"slot":"14:00"}]}}
如果要操纵原始数组以创建此输出,可以如下操作:

$newArray = array();
foreach($array as $key=>$entry) {
    foreach($entry as $subEntry) {
        $newArray[$key][] = array('slot' => $subEntry);
    }
}
$newArray = array('Timeslots' => $newArray);
然后
json\u encode($newArray)
将获得相同的输出

$arry = array( 1 => array(2 => '12:00', 3 => '12:30', 4 => '13:00', 5 => '13:30'), 2 => array( 2 => '12:00', 3 => '12:30', 4 => '13:00', 5 => '13:30', 6 => '14:00'));
foreach($arry as $key => $value) {
    $slots = array_values($value);
    foreach ($slots as $key2 => $slot) {
        $slots[$key2] = array('slot' => $slot );
    }
    $arry[$key] = array_values($slots);
}
echo json_encode(array("Timeslots"=>$arry));

编辑:忘记了“插槽”键,这是有效的。

输出无效。为键
插槽
指定了多个不同的值,这是不可能的。但是,可以使它看起来像这样:
{“1”:{“2”:{“slot”:“12:00”},“3”:{“slot”:“12:30”}…
在将原始对象传递给
json\u encode
之前,您必须对其进行转换。制作一个与所需输出匹配的副本。@treegarden输出确实有效。它是有效的json当您甚至没有
[3]=>数组时,如何获得以下结果,但我确实看到了
“3”:{
在你的结果中。
@Arockiaraj
检查我的答案。谢谢