【问题标题】:"Undefined offset" error in search result搜索结果中的“未定义偏移”错误
【发布时间】:2019-07-24 08:17:42
【问题描述】:

我做了一个小代码来搜索TXT文件, 它可以工作,但我在这部分代码中遇到错误:

function searchLastName(Array $array, $value)
{
    $lastresult = '';
    foreach ($array as $subarray) {
        if (isset($subarray[1]) && stristr($subarray[1], $value) && $value != "") {
            $lastresult .= $subarray[0] . " " . $subarray[2] . " " . $subarray[1] . "<br />";
        }
    }
    return $lastresult;
}

$file = fopen("classlist.txt", "r");
$filestring = "";
while (!feof($file)) {
    $tempstring = fgets($file);
    $filestring .= $tempstring . "<br />";
    $line_of_text .= $tempstring;
}

第 17 行“未定义变量:line_of_text”中的第一个错误

第 5 行“未定义偏移量:”中的第二个错误

我做错了什么?

【问题讨论】:

  • $line_of_text .= $tempstring 但你一开始没有定义$line_of_text。至于第 4 行,您使用 $subarray 作为数组并假设它具有三个项目,但代码中没有任何内容在盲目访问之前检查是否存在这种情况。
  • 好的,我解决了其中一个问题,但是“line_of_text .= $tempstring;”我没有得到这个?

标签: php


【解决方案1】:

你必须在 while 循环之前初始化你的变量:

 $line_of_text = '';

$subarray 很可能只有一个或两个元素,因此键 2 未定义。

【讨论】:

  • “很可能只有一个元素”——你是根据什么做出这个假设的?
  • Exaclty 我只有两个元素,第二个未定义,谢谢我解决了这个问题,但是这个“line_of_text .= $tempstring;”呢我没有得到这个?
  • .= 表示您连接两个字符串:$line_of_text$tempstring 的“旧”值。在第一次迭代时,$line_of_text 没有定义。因此,您应该在 while 循环之前添加该行
猜你喜欢
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
相关资源
最近更新 更多