我有以下代码片段,它的工作原理是:
d3.selectAll(".map-wrapper").on("click", "g", function(event) {
event.preventDefault();
var ward = d3.select($(this)).data().ward;
});
但运行时会记录以下警告:
g
这可能是我的逻辑错误。也许有人可以在这里说清楚一点?
答案 0 :(得分:1)
file_put_contents
可以一次性处理打开,写入和关闭的操作 - 无需在其后调用fwrite
和fclose
。 (不仅没有必要 - 它甚至没有任何意义,因为使用file_put_contents
你甚至没有文件句柄可以开始。)
file_put_contents
返回写入的字节数,一个整数值 - 这就是你得到这些警告的原因。
答案 1 :(得分:1)
使用fwrite()
时,您根本不需要fclose()
或file_put_contents()
。来自the docs for file_put_contents()
:
此功能与连续调用
fopen()
,fwrite()
和fclose()
以将数据写入文件相同。
您的代码应如下所示:
$file = fopen("../offer/work/uploads/".$php_id.".html","w");
fwrite($file,$data); // Note: you could use file_put_contents here, too...
fclose($file);
$txt = "<?php include 'work/uploads/".$php_id.".html';?>";
$slot = file_put_contents('../offer/slots.php', $txt.PHP_EOL , FILE_APPEND);
$theCounterFile = "../offer/count.txt";
$oc = file_put_contents($theCounterFile, file_get_contents($theCounterFile)+1);
至于为什么你的当前代码出错:fwrite()
和fclose()
期望第一个参数是一个资源(你从fopen()
获得的返回值的类型)。但是你传递的是file_put_contents()
返回的值,它是一个整数。所以,你得到一个错误。