将PHP数组更改为带有静态索引的JSON数组
我有以下由PHP生成的数组值将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
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
检查我的答案。谢谢