0

如果在 while 循环中找不到匹配项,我正在尝试显示一条错误消息“未找到匹配项”。目前,我知道如果我在里面放一个“else”语句,它只会为每一行显示“Match not found”,直到它到达循环的末尾。

这是我到目前为止所拥有的:

    <?php
        $filename = "roster.txt";
        $fp = fopen($filename, "r") or die("Couldn't open $filename");

        while(!feof($fp))
        {   $line = fgets($fp);

            if (preg_match('/Navi/',$line)) {
                print "$line<br>";      
            }
        }
        fclose($fp)
    ?>

感谢您提供的任何帮助!

4

4 回答 4

1

match像之前一样设置一个falsewhile循环并将其设置true为找到匹配时。在 while 循环检查match变量之后。

$match = false;
while(!feof($fp))
{   $line = fgets($fp);
$answer = str_replace(":"," ",$line);   
  if ((preg_match("/$lastname/",$line)) && (preg_match("/$id/",$line))) {
      $match = true;
      print "$answer<br>";        
  }
}
if ($match === false) {
    echo 'Match not found';
}
于 2012-10-18T05:01:22.530 回答
0

我累了......这可能不是最优雅的方式,但它应该工作。

$x=0;
while(!feof($fp))
{   $line = fgets($fp);
$answer = str_replace(":"," ",$line);   
if ((preg_match("/$lastname/",$line)) && (preg_match("/$id/",$line))) {
print "$answer<br>";    
$x = $x+1;    
}
}
if($x==0) {
echo 'No match found';
}
于 2012-10-18T04:59:09.523 回答
0

我会使用一个布尔值来跟踪是否找到了该值然后使用它来有选择地显示一条消息(如果没有找到):

<?php
$filename = "roster.txt";
$fp = fopen($filename, "r") or die("Couldn't open $filename");
$lastname = $_GET['lastname'];
$id = $_GET['id'];

// variable to track if any matches are found, initialize to false
$found = false;   
while(!feof($fp)){   
    $line = fgets($fp);
    $answer = str_replace(":"," ",$line);   
    if ((preg_match("/$lastname/",$line)) && (preg_match("/$id/",$line))) {
        print "$answer<br>";

        // when a match is found, set to true
        $found = true;    
    }
}

// If no matches were found, show the error message
if (!$found) print "Match not found";
fclose($fp)
?>
于 2012-10-18T05:01:14.430 回答
0

创建一个局部变量来跟踪是否找到了匹配项。例如在伪代码中:

int match_is_found = 0

loop :
    // do stuff
    if match was found:
        match_is_found = 1

end loop

if match_is_found is 0:
    display error message

(抱歉,如果这对 PHP 没有帮助 - 从未使用过)。

于 2012-10-18T05:01:20.030 回答