我试图在.json中为交互式书籍构建一个内容表。我的输出必须从:
开始{
"url": "index.html",
"hidden": true
},
但之后我想添加数组。 array_unshift在之前添加了一个元素,我希望脚本在之后添加新的数组。换句话说, index.html 应该保持在最顶层,并由我用脚本生成的数组继承。我该怎么做?
post.php中
<?php
// check if a form was submitted
if( !empty( $_POST ) ){
$file = 'entries.json';
$json = file_get_contents($file);
// convert json back to a php stdClass
$phpClass = json_decode($json);
$postArray = array(
"url" => $_POST['url'],
"title" => $_POST['title'],
"thumb" => $_POST['thumb'],
"byline" => $_POST['byline']
);
// push the new $postArray onto the top of phpClass
array_unshift($phpClass->contents, $postArray);
// encode php class into json again
$new_json = json_encode($phpClass);
// write it out
file_put_contents( $file, $new_json);
}
答案 0 :(得分:0)
看一个小例子:
//example array
$array = array('a', 'b');
//position, where we want to paste new value
$offset = 2;
$result = array_slice($array, 0, $offset - 1, true) +
array("my_key" => "my_value") +
array_slice($array, $offset - 1, count($array)- $offset + 1, true);
现在,如果我们在var_dump()
上致电$result
,我们会得到:
array
0 => string 'a' (length=1)
'my_key' => string 'my_value' (length=8)
1 => string 'b' (length=1)
而不是示例中的array("my_key" => "my_value")
您可以使用自己的数组。它将永远是结果中的第二个。
答案 1 :(得分:0)
未经过测试
$file = 'entries.json';
$json = file_get_contents($file);
// convert json back to a php stdClass
$phpClass = json_decode($json);
// cut the header off
$header=array_shift($phpClass);
$postArray = array(
"url" => $_POST['url'],
"title" => $_POST['title'],
"thumb" => $_POST['thumb'],
"byline" => $_POST['byline']
);
// push the new $postArray onto the top of phpClass
array_unshift($phpClass->contents, $postArray);
// paste the header back on.
array_unshift($phpClass->contents, $header);
// encode php class into json again
$new_json = json_encode($phpClass);
// write it out
file_put_contents( $file, $new_json);
}