【问题标题】:Warning message with the 'explode' statement only when dealing with files [duplicate]仅在处理文件时带有“explode”语句的警告消息[重复]
【发布时间】:2020-01-03 05:08:36
【问题描述】:

仅当我使用 explode 语句处理文件时,才会出现未定义的偏移错误。它说由explode语句创建的数组是未定义的,但不是,当我按照注释行中的代码处理普通explode语句时。

解释是什么?

额外信息——我当然在文件中使用了制表符:

 <?php
     $file = "../hai/jobs.txt";
     if (file_exists($file))
     {
         $handle = fopen($file, "r");
         if (!empty($file))
         {
             while (!feof($handle))
             {
                 $curLine = fgets($handle);
                 if ($curLine != "")
                 {
                     $line = explode("\t", $curLine);

                     echo $line[1];

                     //$a = "hai,how,are,you,going";
                     //$array = explode (",", $a);

                     //echo $array[1];
                 }
             }
         }
         fclose($handle);
     }
 ?>

 </body>
 </html>

【问题讨论】:

  • 如果您的文件中有一行没有制表符,则爆炸中不会有[1] 元素。请向您显示文件内容和您的预期结果。给这只猫剥皮的方法不止一种。附: !empty($file) 是毫无意义的检查。
  • 是的,我在文件中使用了制表符,这就是我将内容插入文件的方式---$contents = $pid. " \t ".$title." \t".$description." \t ".$closing_date." \t ".$state." \t " .$contract." \t ".$position." \t ".$Application."\n";
  • 如果您在 cmets 中添加参数来质疑为什么应该重新打开它会更好。由于重新打开关闭选民可能看不到其他评论。

标签: php offset isset


【解决方案1】:

我认为问题只是分隔符:您是否在文件中使用\t(标签)?如果您使用与注释示例中相同的文本,那么您可能想要切换到逗号 (,)。

【讨论】:

  • 不,这是错误的答案,我在文件中使用了制表符,这是我在文件中插入内容的方式---$contents = $pid. " \t ".$title." \t".$description." \t ".$closing_date." \t ".$state." \t " .$contract." \t ".$position." \t ".$Application."\n";
  • 我的问题因不公平的原因被关闭,关闭问题的人认为我的文件中没有“制表符”(“\t”)并且我错误地只输入了“逗号”字符“(”,)和错误使用制表符(“\ t”)作为爆炸语句中的分隔符,他认为这就是我收到警告消息的原因,他的假设是错误的,我的文件有制表符并且没有甚至只有一个逗号字符,而且问题与他提到的问题无关,因此我的问题被错误地建议为重复,我需要帮助重新打开问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多