0

我有一个奇怪的场景,我有一个简单的函数,我尝试连接简单的 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 和 $optionsStr 它会打印内容很好但是当我在循环外部打印返回变量时它的结果是空的,为什么?

4

1 回答 1

0

您不需要将 $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;
于 2013-07-10T21:17:58.600 回答