如果未找到匹配项,则回显"no results found"

  • 本文关键字:no found results 如果 php
  • 更新时间 :
  • 英文 :


我正在使用以下代码返回包含" http://"的数据 - 代码正常工作,我获得了我需要的数据。

工作代码

foreach($all_urls as $index => $value) {
    if (preg_match('/http:/', $value)) {
        echo "<pre>{$value}</pre>";
    }
} 

但是,如果找不到匹配项,我也希望它也返回消息。我尝试过,但似乎不起作用。

不工作代码

foreach($all_urls as $index => $value) {
    if (preg_match('/http:/', $value) === false) {
        echo 'no matches found';
    } elseif (preg_match('/http:/', $value)) {
    echo "<pre>{$value}</pre>";
    }
}

另外,尝试了一下,但是它不好,因为我会重复每次迭代的"找不到匹配项"。

foreach($all_urls as $index => $value) {
    if (preg_match('/http:/', $value)) {
        echo "<pre>{$value}</pre>";
    } else { 
      echo "no matches found";
    }
} 

我需要一次检查一次,如果在数组中找不到" http://",则仅返回一次"未找到匹配"

使用boolean变量应该是一种很好的方法。

一旦我们有匹配,我们将将布尔值设置为 true。否则,它将具有其初始值-false

循环后,我们应该检查变量的值,如果保留为false,我们应该打印"未找到的匹配项"消息。

$matches = false;
foreach($all_urls as $index => $value) {
    if (preg_match('/http:/', $value)) {
        echo "<pre>{$value}</pre>";
        $matches = true;
    }
} 
if(!$matches){
 echo "no matches found";
}

只需添加一个变量,该变量可以确保仅输出no matches,例如:

$error = FALSE;
foreach($all_urls as $index => $value) {
    if (preg_match('/http:/', $value)) {
        echo "<pre>{$value}</pre>";
    } else { 
      if(!$error) {
        echo "no matches found";
        $error = TRUE;
      }
    }
} 

最新更新