目前,我正在尝试用我的键模拟一天中的几个小时以插入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,
}]
这通常是我所期望的;但是当我尝试制作这些数字键时,这并不是我希望看到的。
有没有办法实现在数字前面加上 _ 之类的东西以强制它为字符串?
谢谢
您可以添加一个临时元素来强制将 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 正则表达式相结合,我们只是通过 PHP 有点邪恶的类型系统来困扰我们:
$finejson = preg_replace("/'"_'":'".*'",/", "", $json);
这给了我们这个:
{
"0": {
"hello": 0,
"hell0": 2
},
"1": {
"hello": 0,
"hell0": 2
},
"2": {
"hello": 0,
"hell0": 2
}
}