首页 > 解决方案 > isset 可以在 for 循环的条件下使用吗?

问题描述

我正在尝试将尚未写入住宅公寓的房间缩短:RA。因此,只要 array_shift 将房间拖出阵列,循环就应该进一步计数,并且它必须检查 allRARooms 是否还有一些房间留给我。

那么在for 条件下检查isset可以吗?

for($i = 1; count($ra) <= $quantity && isset($this->allRARooms); $i++)

标签: phpfor-loop

解决方案


是的,您可以将for循环终止条件设置为您喜欢的任何表达式。
你甚至可以跳过它!例如:

for ($i=0;;$i++) {
 if ($i>10) break; 
 echo "$i\n";
}

或者,也许你想要一个永恒的循环for?这里是 :

for (;;) echo ++$x . "\n";

本质上,您可以跳过您需要的 for 循环中的任何部分

条件优化

你的情况count($ra) <= $quantity && isset($this->allRARooms)可以考虑一下。

  1. 在 99% 的情况下, 就足够了count($ra) <= $quantity && $this->allRARooms,因为'',null,[]-all 的计算结果为false
  2. 此外,您应该将allRARooms var check 放在首位,例如:
    $this->allRARooms && count($ra) <= $quantity. 这样,您将使用短路评估技巧来提高条件检查速度,因为如果未设置 var allRARooms - 将不会评估 count($ra) - 从而节省 CPU 滴答 声

推荐阅读