【发布时间】:2012-11-20 16:15:35
【问题描述】:
所以我正在处理的脚本有问题。我有一个包含名为 roster0.json、roster1 等的 JSON 文件的文件夹。
$dir = "responses/";
$files = glob($dir . "roster*");
$failed = array();
$failcnt = 0;
if (isset($files)) {
$data = null;
for ($i = 0; $i < count($files); $i++) {
$data = json_decode(utf8_decode(file_get_contents($files[$i])));
if(isset($data)){
// Process stuff
当我使用 var_dump($files) 时,我得到一个包含 100 多个路径“responses/roster0.json”的数组。 当我测试 $data 时,我得到了正确的数据数组。 但是,一旦循环进入下一个文件,它就永远不会加载它,也永远不会处理它。
这是疯狂的部分。如果我更改 for 循环的开始,例如$i = 20。它将加载目录中的第21个文件并解析并正确插入到db中!
忽略底部的失败内容,这是脚本的完整当前版本。 http://pastebin.com/yqyKi5Ag
PS - 我在 PHP 中有完整的警告/错误报告,但没有收到任何错误消息...帮助!谢谢!
【问题讨论】:
-
你是如何执行 PHP 的?如果您在浏览器中执行它,错误将出现在 Web 服务器错误日志中。如果您配置了 SSL 日志并使用 SSL 访问脚本,则错误将出现在相应的日志中
-
我们的服务器通常会丢弃一个error_log文件并且没有。
-
你有没有试过写错东西,看看日志中是否出现错误?
-
代码并没有走得太远,但您对isset 的使用在技术上是不正确的,因为您检查的内容始终是设置好的。在某些情况下,您可能想要
!== null和is_array。此外,json_decode(utf8_decode(file_get_contents($files[$i])));不会抛出任何异常,因此它周围的 try...catch 永远不会捕获错误。阅读每个函数的文档以查看它们在失败时返回的内容并检查这些值。 -
一个 PS - ini_set('display_errors', 1);错误报告(E_ALL);已开启。
标签: php json loops file-get-contents