目前我正在尝试使用我的密钥插入Mongo来模拟一天中的小时数,并且我在这些行(简化)设置中有一些东西:
for($i=0;$i<23;$i++){
$returnElement["hours"]["$i"] = array();
foreach($this->list_of_daily_usage_items as $item){
/* @var $item DailyUsageItem */
$returnElement["hours"]["$i"][$item->getLabel()] = $item->getDefaultValue();
}
}
有了这个我正在创造类似于:
的东西 [hours] => Array
(
[0] => Array
(
[labelOne] => 0
[labelTwo] => 0
)
....
[23] => Array
(
[labelOne] => 0
[labelTwo] => 0
)
)
然而,当我推送到JSON时,它将其转换为:
"hours": [{
"labelOne": 0,
"labelTwo": 0,
}, {
"labelOne": 0,
"labelTwo": 0,
}]
通常我会期待;但是,当我试图制作这些数字键时,它并不是我希望看到的......
有没有办法在数字上加上像_之类的东西来强制它到一个字符串?
谢谢
答案 0 :(得分:2)
您可以添加临时元素以强制将PHP数组转换为JSON对象
array("_" => "removeme",
0 => array("hello" => 0,
"hell0" => 2),
1 => array("hello" => 0,
"hell0" => 2),
2 => array("hello" => 0,
"hell0" => 2));
这将生成
{
"_": "removeme",
"0": {
"hello": 0,
"hell0": 2
},
"1": {
"hello": 0,
"hell0": 2
},
"2": {
"hello": 0,
"hell0": 2
}
}
如果我们将它与neato regexp相结合,我们只是讨厌过去的PHP有点邪恶的类型系统:
$finejson = preg_replace("/\"_\":\".*\",/", "", $json);
给了我们这个:
{
"0": {
"hello": 0,
"hell0": 2
},
"1": {
"hello": 0,
"hell0": 2
},
"2": {
"hello": 0,
"hell0": 2
}
}