将foreach循环放在if条件中

Ben*_*tis 6 php loops if-statement

我需要创建一个将遍历并为条件语句创建条件的foreach语句.我写了这段代码,没想到它会起作用,当然它没有......

$filename = "whitelist.txt";
$handle = fopen($filename, 'r');
$whitelist = fread($handle, filesize($filename));
fclose($handle);
$whitelist = explode("\n", $whitelist);
if (
  foreach ($whitelist as $value) {
    strpos($ref, 'http://'.$value.'/')===0 ||
  }
)
Run Code Online (Sandbox Code Playgroud)

那么,这应该能够奏效吗?还是我只是疯了?如果真的没有办法在这样的情况下设置循环,有人可以提出更好的方法来做到这一点吗?非常感激!

Fel*_*ing 15

事先计算值,不能使用循环作为表达式:

$val = false;

foreach ($whitelist) {
   $val = $val || strpos($ref, 'http://'.$whitelist.'/')===0;
}

if($val) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,您可能只想简单地"if(strpos(...)=== 0){$ val = true; 打破;}`在简单的情况下做更少的工作. (5认同)