我从数组中提取数据,目的是将其写入文件供以后使用。
提取工作正常,print_r语句的结果为我提供了我需要的数据。但是,输出到文件的数据只能获取提取数据的最后一个值。
我错过了什么?我试过爆炸,将print_r的结果保存到一个字符串,尝试输出缓冲start_ob()都没有结果。
$url = "http://api.discogs.com/users/xxxxxx/collection/folders/0/releases?per_page=100&page=1";
$json = json_decode(file_get_contents($url));
// Scan through outer loop
foreach ($json as $inner) {
// scan through inner loop
foreach ($inner as $value) {
//get thumb url
$thumb = $value->basic_information->thumb;
//Remove -150 from thumb url to gain full image url
$image = str_replace("-150","",($thumb));
// Write it to file
file_put_contents("file.txt",$image);
print_r($image);
}
}
答案 0 :(得分:0)
使用提取的最后一个数据反复重写文件。因此,您需要将数据附加到图像变量,并且最终只需要将其放在磁盘上。
$url = "http://api.discogs.com/users/xxxxxx/collection/folders/0/releases?per_page=100&page=1";
$json = json_decode(file_get_contents($url));
// Scan through outer loop
foreach ($json as $inner) {
// scan through inner loop
foreach ($inner as $value) {
//get thumb url
$thumb = $value->basic_information->thumb;
//Remove -150 from thumb url to gain full image url
// and append it to image
$image .= str_replace("-150","",($thumb));
// you can add ."\n" to add new line, like:
//$image .= str_replace("-150","",($thumb))."\n";
// Write it to file
}
}
file_put_contents("file.txt",$image);
print_r($image);
答案 1 :(得分:0)
来自file_put_contents()
手册
http://www.php.net/manual/en/function.file-put-contents.php
此功能与连续调用fopen()
,fwrite()
和fclose()
以将数据写入文件相同。
如果filename不存在,则创建该文件。否则,将覆盖现有文件,除非设置了FILE_APPEND
标志。
因此,您可以在现有代码中使用标记FILE_APPEND
来停止在每次写入时重写文件,或者累积字符串并像以前的评论者所说的那样写一次(他们的方式更快更好)