我想用php添加数据到json文件。
json文件如下所示:
[
{
"content":"this is level 0 message 0",
"messages": [
{
"content":"this is level 1 message 0",
"messages": []
},
{
"content":"this is level 1 message 1",
"messages": []
}
]
},
{
"content":"this is level 0 message 1",
"messages": []
}
]
可以是任何深层次(消息中消息中的消息......)。
在我的post.php
文件中,我获取了新消息的内容(来自ajax)和一个数组,其中包含key = deep level和value = message number的路径。例如,对于“1级消息1”中的新消息:
Array (
[0] => 0
[1] => 1
)
我尝试制作递归函数:
function dig($path,$level,$obj) {
if ($level < count($path)-1) {
echo 'has children';
dig($path,$level+1,$obj[$path[$level]]['messages'])
} else {
echo 'has no children';
array_push($obj[$path[$level]]['messages'], $_POST);
$dataJsonNew = json_encode($obj, JSON_PRETTY_PRINT);
file_put_contents($dataFile, $dataJsonNew);
}
dig($path,0,$dataJson)
它适用于第一级但不深入,因为我在迭代时从root中失去了路径。
所以基本上如何获得
array_push($obj[0]['messages'][1]['messages'], $_POST);
来自
Array (
[0] => 0
[1] => 1
)
(或更大的数组)
如何修复我的功能? 还有其他解决方案吗?
编辑:
或者是否可以评估这种$ str?
$str = "print_r($dataJson";
foreach ($path as $k) {
$str .= "[".$k."]" . "['messages']";
}
$str .= ")";
谢谢!
答案 0 :(得分:0)
尝试定义此功能:
$obj[0]['messages'][1]['messages']
然后得到get_messages([0,1], $obj);
的等价物:
$obj
请注意,您所谓的function readyFunction() {
if (window.DeviceOrientationEvent) {window.addEventListener('orientationchange', function () { location.reload(); }, false); }
}
实际上是一个数组。