2015-10-18 23 views
1

我有一個奇怪的問題,我寫了一個函數。當返回像「Hello」這樣的硬編碼字符串時,它會返回這個值,但是當我將這個值存儲在一個變量中時,它不會返回任何東西。功能返回字符串,但不存儲在變量

此外,當我不把它存儲在一個變量,並嘗試返回它沒有得到返回。

以下是我的代碼。任何人都可以看到我做錯了什麼?

在此先感謝。

public function getPath($pageID = null) { 
    if($pageID == null) $pageID = $this->id; 

    $data = $this->_db->fetch_array("SELECT * FROM `pages` WHERE `id` = '".$pageID."'"); 

    if(!empty($data)) { 
     $this->tempPath[] = $data['basename']; 

     if($data['parentID'] != 0) { 
      $this->getPath($data['parentID']); 
     } else { 
      $returnPath = $this->tempPath; 
      $this->tempPath = array(); 
      $returnPath = implode('/', array_reverse($returnPath)); 
      //This variable holds the value, when echo'ed its the correct value 
      echo $returnPath; 

      return $returnPath; 
     } 
    } 
} 
+0

無法重現您的問題。你有任何錯誤?你是否向我們展示了你的真實代碼? – Rizier123

+0

這是函數中使用的所有代碼,它產生正確的數據,但返回時什麼也得不到。當我編碼:返回「你好」它確實返回「你好」,但它不會返回任何值的變量。 –

+0

確切的輸出是什麼:'var_dump($ returnPath);'在return語句之前? – Rizier123

回答

1

重寫了代碼以下,現在它的工作

public function getPath($pageID = null) { 
    if($pageID == null) $pageID = $this->id; 

    $data = $this->_db->fetch_array("SELECT * FROM `pages` WHERE `id` = '".$pageID."'"); 

    if(!empty($data)) { 
     $this->tempPath[] = $data['basename']; 
    } 

    return implode('/', $this->tempPath); 
} 

的問題是,該代碼是在一個foreach循環從而保持覆蓋正確的價值觀和循環,直到沒有返回路徑。感謝您的建議。

更多代碼並不總是更好:-)