php函数范围变量最后总是空的


php function scope variable always in the end empty

我有一个奇怪的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;