多变量赋值导致变量未定义


multiple variable assignment causing Undefined variable

我又有一件不太明白的事。我为您提供以下代码:

<?php
class Helper
{
  static function SelectDateTimeForm($type)
  {
    if($type == 'days')
    {
      $r .= "<select name='something'>";
      for ($x = 1; $x <= 31; $x++) {
        $r .= "<option value='$x'>$x</option>";
      }
      $r .= "</select>";
    }
    return $r;
  }
}
?>

所以我只想返回$r变量中的全部select内容,这样我就可以通过调用SelectDateTimeForm()函数来访问它。

现在的问题是,当我在if语句中时(也尝试使用switch case),$r变量的行为似乎有些疯狂。当我离开if并在返回$r之前直接定义$r时,一切似乎都正常。

那么,为什么我不能访问或修改if中的$r变量呢?为什么我会得到未定义变量Notice。

谢谢你的建议。

这不是因为你有多个赋值,而是因为你没有声明它。所以在if()之上声明$r

$r = "";
if($type == 'days'){
 .....
}

如果$type不等于days,它将不会进入if(),但您返回的是未声明的$r

在if为gloable变量之前声明$r

class Helper
{
  static function SelectDateTimeForm($type)
  {
    $r = '';  
    if($type == 'days')
    {
      $r .= "<select name='something'>";
      for ($x = 1; $x <= 31; $x++) {
        $r .= "<option value='$x'>$x</option>";
      }
      $r .= "</select>";
    }
    return $r;
  }
}