导致未定义变量的多变量赋值
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;
}
}
我又遇到了不太明白的事情。 我为您提供以下代码:
<?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;
}
}