我有一个奇怪的senario,我有这个简单的函数,我试图连接简单的html字符串但是在最后(循环之后)保存该字符串的变量总是空的。
function buildSelectOptionsASString($elmArray)
{
global $optionsStr;
foreach ($elmArray as $Rec)
{
if(property_exists($Rec,'id')==true)
{
$ElmId = $Rec->id;
$ElmName = $Rec->name;
$optionsStr = $optionsStr ."<option value='"".$ElmId."'">". $ElmName ."</option>'n";
}
}
echo $optionsStr;
return $optionsStr;
}
如果我打印$ElmId$ElmName和$optionstr,它将打印连续罚款但是当我在循环外打印返回变量时,其结果为空为什么?
您不需要将$optionsStr声明为全局。事实上,如果您将它作为函数的值返回,则不应该这样做。
试试这个:
function buildSelectOptionsASString($elmArray)
{
$optionsStr = ""; // this $optionsStr is local to this function.
foreach ($elmArray as $Rec)
{
if(property_exists($Rec,'id')==true)
{
$ElmId = $Rec->id;
$ElmName = $Rec->name;
$optionsStr = $optionsStr ."<option value='"".$ElmId."'">". $ElmName ."</option>'n";
}
}
echo $optionsStr;
return $optionsStr;
}
$elmArray = array(); // set up your array here
$optionsStr = buildSelectOptionsASString($elmArray); // This is a different $optionsStr
echo $optionsStr;