我正在将json数组写入文件。我越来越 [{ , , }][{ , , }][{ , , }]。我需要此输出[{,,},{,,},{,,}]。 我不是将json项添加到数组中,而是创建多个数组。
$a = array();
$new_data = array(
'name' => $_POST["product_name"],
'age' => $_POST["quantity_stock"],
'city' => $_POST["item_price"]
);
// pushing the post data each time the page reloads with post values
array_push($a,$new_data);
$json = json_encode($a);
$myfile = fopen("newfile.json", "a+") or die("Unable to open file!");
fwrite($myfile, $json);
fclose($myfile);
$data = file_get_contents("newfile.json");
$data = json_decode($data, true);
//output
[{"name":"ggg","qty":"ff","price":"ff"}]
[{"name":"ggg","qty":"ff","price":"ff"}]
//How to achieve this
[{"name":"ggg","qty":"ff","price":"ff"},
{"name":"ggg","qty":"ff","price":"ff"}]
答案 0 :(得分:0)
尝试将文件中的数据加载到a中,将new_array附加到所述数据,然后将这个新的json列表对象写入文件。
答案 1 :(得分:0)
问题在于将数据附加到newfile.json,这里一个列表已作为文本附加,之后每当我们附加更多文本时,它都会附加为文本,而不是json对象,因此请尝试以下代码和现有代码: -
$a = array();
$new_data = array(
'name' => $_POST["product_name"],
'age' => $_POST["quantity_stock"],
'city' => $_POST["item_price"]
);
// reading data from .json file
$data = file_get_contents('newfile.json');
// creating an array of object from the text of .json file
$tempArray = json_decode($data);
// adding our new object to array
array_push($tempArray, $new_data);
// creating json representation of the array
$jsonData = json_encode($tempArray);
// writing json representation to the .json file
file_put_contents('newfile.json', $jsonData);
希望这会有所帮助。
答案 2 :(得分:0)
管理将这些合并在一起。最有可能是更好的解决方案
官方PHP文档中的 官方PHP文档中的$a = [{"name":"ggg","qty":"ff","price":"ff"}];
$b = [{"name":"ggg","qty":"ff","price":"ff"}];
json_encode(array_merge(json_decode($a, true),json_decode($b, true)))
或
$r = [];
foreach(json_decode($a, true) as $key => $array){
$r[$key] = array_merge(json_decode($b, true)[$key],$array);
}
echo json_encode($r);
答案 3 :(得分:0)
我认为您在每次发布请求后都会写入该文件,而您的数组$a
将只包含post数组。
这就是为什么你最后得到你的文件
//output
[{"name":"ggg","qty":"ff","price":"ff"}]
[{"name":"ggg","qty":"ff","price":"ff"}]
所以要解决此问题并以正确的格式获取数据,每次要写入文件时,首先需要从文件中加载数据,然后将其合并到数组$a
和然后再写一遍。
所以这段代码应该适合您的情况
//load file data
$data = file_get_contents("newfile.json");
$a = json_decode($data, true);
$new_data = array(
'name' => $_POST["product_name"],
'age' => $_POST["quantity_stock"],
'city' => $_POST["item_price"]
);
// pushing the post data each time the page reloads with post values
array_push($a,$new_data);
$json = json_encode($a);
$myfile = fopen("newfile.json", "w+") or die("Unable to open file!");
fwrite($myfile, $json);
fclose($myfile);
$data = file_get_contents("newfile.json");
$data = json_decode($data, true);
我使用文件中的数据初始化$a
,并将fopen中的更改模式初始化为w+
答案 4 :(得分:0)
{{1}}
答案 5 :(得分:0)
使用下面的代码,希望它能满足你的输出:
$data = file_get_contents("newfile.json");
$a = explode("][", $data);
$x = '';
foreach($a as $y){
$x .= $y.",";
}
echo trim($x, ",");