gpt4 book ai didi

php - 奇怪的 for 循环语法

转载 作者:可可西里 更新时间:2023-11-01 13:41:07 25 4
gpt4 key购买 nike

我已经使用 php 编程大约 2 年了。

我刚刚偶然发现了这个 for 循环:

    // Check the URI namespace for a context
$wsDir = basename(dirname(__FILE__));
$uriArr = explode("/", $_SERVER['REQUEST_URI']);

for (
$i = 0, $uriSize = sizeof($uriArr);
$i < $uriSize && $uriArr[$i] != $wsDir && $i++;
);

$i++;
self::$executionContext = isset($uriArr[$i]) && !empty($uriArr[$i]) && substr($uriArr[$i], 0, 1) != '?'
? strtoupper($uriArr[$i]) : 'SOAP';

我不知道这应该如何工作。

有人能给我解释一下吗?

最佳答案

它只是一个普通的三部分 for 循环,没有主语句和一个空的第三部分。

来自manual :

for (expr1; expr2; expr3)
statement

The first expression (expr1) is evaluated (executed) once unconditionally at the beginning of the loop.

In the beginning of each iteration, expr2 is evaluated. If it evaluates to TRUE, the loop continues and the nested statement(s) are executed. If it evaluates to FALSE, the execution of the loop ends.

At the end of each iteration, expr3 is evaluated (executed).

所以:

for (
# initializes two variables
$i = 0, $uriSize = sizeof($uriArr);

# conditional, expr2
$i < $uriSize && $uriArr[$i] != $wsDir && $i++;

# no expr3
);

如果 expr2 的计算结果为真,则循环继续。当然没有要执行的语句或 block ,所以它只是跳转到下一个迭代,这意味着 expr2 将重复执行,直到它在某个时候计算为 false。

正如 R. Chappell 在评论中指出的那样,这可能是在字符串中找到一个位置。您可以使用类似的逻辑重写它,但以更“描述性”的方式:

$uriSize = sizeof($uriArr)

for ($i = 0; $i < $uriSize; $i++) {
if ($uriArr[$i] == $wsDir) break;
}

# now $i will be the index of the first $wsDir occurrence in the $uriArr array

关于php - 奇怪的 for 循环语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40790870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com