0

我有一个多维数组,我在其上运行一个 foreach 循环。

我基本上想看看我是否将 country_url 存储在数据库中。如果它在数据库中,那么我会回显“存在”,但如果它不存在,那么我想回显“不存在”。我不希望它告诉我每个数组是否存在,但我希望 foreach 循环告诉我 country_url 是否存在于其中一个数组中。

foreach ($countriesForContinent as $country) {
    if ($country['country_url']==$country_url) {
        echo "exists";
    } else {
        echo "doesn't exist";
    }
}

有人能帮我解决这个问题吗?

4

4 回答 4

1

您可以存储一个变量,然后break在找到该项目后使用它来终止循环:

$exists = false;
foreach ($countriesForContinent as $country) {
  if ($country['country_url']==$country_url) {
    $exists = true;
    break;
  }
}

if ($exists) {
  echo "Success!";
}
于 2013-04-30T13:54:51.737 回答
1

尝试这个:

$exist = false;    
foreach ($countriesForContinent as $country) {
        if ($country['country_url']==$country_url) {
            $exist = true;
            break;
        }
    }

if ($exist){
   echo "exists";
} else {
   echo "doesn't exist";
}
于 2013-04-30T13:55:47.583 回答
0

作为其他答案的替代方案,您可以执行以下操作:-

echo (in_array($country_url, array_map(function($v) { return $v['country_url']; }, $countriesForContinent))) ? 'exists' : 'does not exist';

这可能效率稍低一些,因为它基本上会遍历所有内容$countriesForContinent,而不是找到匹配项和break[ing]。

于 2013-04-30T14:11:43.177 回答
0

这应该有效:

$text = "doesn't exist";

foreach ($countriesForContinent as $country) {
    if ($country['country_url']==$country_url) {
        $text = "exists";
        break;
    }
}

echo $text;
于 2013-04-30T13:55:55.460 回答