可以在while循环中声明变量吗?

时间:2015-12-12 23:40:13

标签: php while-loop

我试图理解this video中的基本PHP代码,它演示了如何在更大的字符串中列出特定字符串的所有位置(在这种情况下,$ string中$ find的所有位置)将被列出):

<?php

$find = 'is';
$find_leng = strlen($find);
$string = 'This is a string, and it is an example.';

while ($string_position = strpos($string, $find, $offset)) {
    echo '<strong>'.$find.'</strong> found at '.$string_position.'<br>';
    $offset = $string_position + $find_length;
}

?>

令我困惑的是,在while循环的()中,似乎正在声明一个新变量$ string_position。但是,while循环不输入0或1,布尔值吗? $ string_position变量不是true / false变量,它用于存储使用strpos()函数传递的字符串的位置。

基本的while循环I'用于使用来自w3schools的比较运算符:

<?php 
$x = 1; 

while($x <= 5) {
    echo "The number is: $x <br>";
    $x++;
} 
?>

变量是否可以在while循环中声明?如果是这种情况,它在这个例子中是如何工作的?这是我关于Stack Overflow的第一个问题,所以希望我能在正确的地方发布这个问题并且它不是一个问题的新手。

2 个答案:

答案 0 :(得分:0)

是的,while循环使用类似boolean的参数。通过做

while ($string_position = strpos($string, $find, $offset)) {

它首先执行括号内的内容,然后计算结果,以确定循环是否应该退出。

如果找不到针,

strpos将返回False,因此$string_position将为false,因此评估结果也将为False并且循环将退出。如果找到针,则在归属后继续循环。

还应该注意strpos可能返回一个计算结果为False的非布尔值,所以要小心那个结构。

Reference on strpos

答案 1 :(得分:0)

在大多数编程语言中,如果存在变量并且不是0或False,则它计为1或True。

在这个例子中:

foreach($tags as $tag){
    <a href="#" style="font-size: <?php echo $tag->tag_size ?>px"><?php echo $tag->tag ?></a>
}

它将输出if ($str="hey"){ echo $str; }; ,因为变量已成功声明且不是0。