php单词出现时出现警告


warning occuring in php word occurence

我编写了以下代码来计算给定文件中出现的字符串数。

PHP

<?php
$p = fopen("g.txt", "r");
$q = fread($p, filesize("g.txt"));
$t = explode(" ", $q);
$m = explode(" ", $q);
$i = 0;
$j = 0;
$r = 0;
$count = 0;
$c = count($t);
$d = array();
echo "count of".
"<br/>";
for ($i = 0; $i < $c; $i++) {
  for ($j = $i; $j < $c; $j++) {
    if ($t[$i] == $t[$j]) {
      $count = $count + 1;
    }
  }
  for ($r = $i + 1; $r < $c; $r++) {
    if ($t[$i] == $t[$r])
      unset($t[$r]);
  }
  echo $t[$i].
  "=".$count.
  "<br/>";
  $count = 0;
}
?>

我收到了第17行和第24行未定义偏移的通知,尽管我的输出是正确的。你能帮我纠正上面的问题吗?

问题是您正在从数组$t中删除项。您将计数保存在$c中,但实际计数将在最后一个内部循环中更改。

即使在任何地方都用count($t)替换$c,它也会出错,因为最后一个循环的顺序应该相反,否则会跳过项目。例如,如果您有列表"a"、"b"、"c"。则当您删除"b"并递增$r时,您根本不会选中"c"。

因此,如果我修复了这些问题,您的代码将如下所示。尽管我并没有真正检查其他问题。坦率地说,我真的不明白该做什么

<?php
      $p=fopen("g.txt","r");
      $q=fread($p,filesize("g.txt"));
      $t=explode(" ",$q); 
      $m=explode(" ",$q);
      $i=0;
      $j=0;
      $r=0;
      $count=0;
      $d=array();
      echo "count of"."<br/>";
      for($i=0; $i<count($t); $i++)
        {
         for($j=$i; $j<count($t); $j++)
            {
             if($t[$i]==$t[$j])
                    {
                     $count=$count+1;
                    }
            }
        for($r=count($t) - 1; $r > $i; $r--)
           {
            if($t[$i]==$t[$r])
                unset($t[$r]);
           }
     echo $t[$i]."=".$count."<br/>";
     $count=0;
     }
     ?>

总之,你应该做更多的测试。如果这个剧本的结果是好的,那么这是偶然的。