PHP while循环如何添加多个条件 实现任一条件满足即终止运行
PHP循环停止逻辑修复方案
核心问题
while语句的运行规则为括号内条件成立时才会继续执行循环体,你当前使用||(逻辑或)作为条件运算符,会导致只要「未找到匹配域名」和「未达循环次数上限」两个条件中任意一个成立,循环就会持续运行,和你要求的「满足任意一个停止条件就终止循环」的需求完全相反。
修复方案1:修改循环条件
将逻辑或||替换为逻辑与&&,仅当同时满足「未找到匹配域名」和「未达循环次数上限」时才继续执行循环,对应停止逻辑为任意一个条件不满足就终止,同时补充DOM节点非空判断避免页面a标签数量不足时报错:
$x="sbplay1.com"; $y=""; $i=0; $j=4; $myUrl="No match found"; while(($y!=$x) && ($i!=$j)){ $node = $dom->getElementsByTagName('a')->item($i++); if (is_null($node)) { break; } $myUrl = $node->getAttribute("href"); $y = parse_url($myUrl, PHP_URL_HOST); } echo $myUrl;
修复方案2:显式判断跳出(可读性更高)
如果想要更直观的停止条件判断,可以写死无限循环,在循环开头判断是否满足停止条件,满足就直接跳出:
$x="sbplay1.com"; $y=""; $i=0; $j=4; $myUrl="No match found"; while(true){ // 满足任意停止条件直接跳出 if ($y == $x || $i == $j) { break; } $node = $dom->getElementsByTagName('a')->item($i++); if (is_null($node)) { break; } $myUrl = $node->getAttribute("href"); $y = parse_url($myUrl, PHP_URL_HOST); } echo $myUrl;
内容的提问来源于stack exchange,提问作者Fariya
相关产品推荐
相关产品推荐

