为了账号安全,请及时绑定邮箱和手机立即绑定

fwrite() 两次写入一个 json 编码的数组

fwrite() 两次写入一个 json 编码的数组

PHP
LEATH 2022-07-09 10:46:02
我正在尝试使用通过获取请求收集的数据编写一个 json 文件。json文件是一个二维的字符串数组,但是当数据写入文件时,嵌套数组会被写入两次。<?php//used for parsing htmlinclude("simple_html_dom.php");//read the file $fp = fopen("j.json", "r");$t = fread($fp, filesize("j.json"));fclose($fp);$loaded = json_decode($t);//print the loaded arrayprint_r($loaded);//gathering the data$url = "https://www.soldionline.it/quotazioni/dettaglio/IT0003934657.html";$prezzo1 = file_get_html($url)->find("span[class=val] b", 0)->plaintext;$data = file_get_html($url)->find("span[class=ora] b", 0)->plaintext;$url = "https://www.soldionline.it/quotazioni/dettaglio/IT0003934657.html";$prezzo2 = file_get_html($url)->find("span[class=val] b", 0)->plaintext;$url = "https://www.soldionline.it/quotazioni/dettaglio/IT0003934657.html";$prezzo3 = file_get_html($url)->find("span[class=val] b", 0)->plaintext;//adding the new data to the arrayarray_push($loaded, array($prezzo1, $prezzo2, $prezzo3, $data));//the new json string is parsed and ready to be written$s = json_encode($loaded);//printing stuff to ensure the data is correctecho "<br>".$s.", type=".gettype($s)."<br>";print_r($loaded);//write the new json string to the same file$fp = fopen("j.json", "w");fwrite($fp, $s);fclose($fp);?>j.json 在脚本运行之前:[]脚本打印的内容:Array ( )[["128,54","128,54","128,54","30\/12"]], type=stringArray ( [0] => Array ( [0] => 128,54 [1] => 128,54 [2] => 128,54 [3] => 30/12 ) )脚本后的 j.json:[["128,54","128,54","128,54","30\/12"],["128,54","128,54","128,54","30\/12"]]我尝试像这样打开文件:$fp = fopen("j.json", "r+");然后我更改了脚本:$s = "\"".json_encode($loaded)."\"";echo "<br>".$s.", type=".gettype($s)."<br>";print_r($loaded);fwrite($fp, $s);fclose($fp);我发现也写了一个空值:[]"[["128,54","128,54","128,54","30\/12"]]""null"
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

浏览器在访问 url 时发送两个请求,一个对 php 文件的请求,另一个对/favicon.ico. 发送第二个请求以检查站点是否具有图标。这第二个请求导致脚本执行两次。

查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信