2013-07-10 34 views
0

我有奇怪的senario我有這個簡單的函數,我嘗試連接簡單的html字符串 ,但最後(循環後)持有該字符串的變量始終爲空。php函數作用域變量總是空的

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它打印含量的不同細 但是當我打印返回變量出來的圈上其結果是空 爲什麼呢?

+0

爲$ elmArray數組或對象?該代碼說後者名稱說hte前 – 2013-07-10 20:49:35

+0

你不需要聲明'$ optionsStr'爲'global',但你確實需要初始化它。 – 2013-07-10 21:11:58

+0

其數組無對象 – user63898

回答

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;