如果在while循环中找不到匹配项,则显示错误消息

时间:2012-10-18 04:54:39

标签: php if-statement while-loop preg-match fopen

如果在while循环中找不到匹配项,我正在尝试显示单个错误消息“Match not found”。目前,我知道如果我在其中放入一个“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 个答案:

答案 0 :(得分:1)

在while循环之前将match设置为false,并在找到匹配时将其设置为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';
}

答案 1 :(得分: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';
}

答案 2 :(得分: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)
?>

答案 3 :(得分: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没有帮助 - 从未使用过它)。