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

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;
  }
}
?>

所以我只想 return 整个 select $r 变量中的东西,这样我就可以通过调用 SelectDateTimeForm() 函数来访问它。

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

那么为什么我不能访问或修改 if 中的 $r 变量?为什么我会收到未定义的变量通知。

谢谢指教。

不是因为你有多重赋值,而是因为你没有声明它。所以在 if().

上面声明 $r
$r = "";
if($type == 'days'){
 .....
}

如果$type不等于days,它不会输入if(),但你返回的是$r,它没有声明。

在if之前声明$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;
  }
}