簡體   English   中英

如果未找到匹配項,則回顯“未找到結果”

[英]echo “no results found” if no matches found

我使用以下代碼返回包含“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;
      }

    }
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM