1

我再次有一些我不太明白的东西。 我为你提供下面的代码:多变量赋值导致未定义的变量

<?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变量里面只是想回归到整个选择的东西,这样我可以通过调用SelectDateTimeForm()函数访问它。

现在的问题是,虽然我在if语句内(也试图用switch case),但$ r变量似乎有点疯狂。 当我离开if并直接在返回$ r之前定义$ r时,一切似乎都奏效。

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

感谢您的建议。

回答

1

它不是因为你有多个任务,而是因为你没有声明它。所以在if()以上申报$r

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

如果$type不等于days,它不会进入if(),但你正在返回其未声明$r。前

+0

是啊,我检查了我的$类型的变量,它是资本...谢谢你给我的隆起! – nevotheless

+0

问题解决了吗? –

+0

是的,你有点告诉我的方式;) – nevotheless

1

申报$ R如果是gloabl可变

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; 
    } 
} 
+0

好吧,我没有声明它,通知消失,但变量仍然不会改变内部if语句。我错过了什么? – nevotheless