2017-10-22 33 views
0

我有一個具有多個函數的Survey類。PHP類中的變量爲null

在其中一個功能中,我檢查是否存在調查 - 如果不存在,則調用其他函數,該函數創建並返回一個新調查。

像這樣:

public function createSurvey($userId) { 
    somecode... 
    return $surveyId; 
} 

另一個功能是這樣的:

public function getExistingSurvey($userId) { 
    $survey = $this->checkIfSurveyExists($userId)... 
    if (!$survey) { 
     return $this->createSurvey($userId); 
    } 
} 

我遇到的問題,似乎是與$userId變量的作用域問題。

當我打電話getExistingSurvey()功能,我要求:

一)返回一個現有的調查項
B)ELSE創建一個新的,並將其返回

該函數返回一個現有的調查,如果它存在並且通過$userId變量就好了。

但是,如果它不存在,我需要創建一個具有createSurvey($userId)功能,那麼它在某種程度上發送過來的$userId一個null值。

這似乎是一個範圍問題。

任何想法? ...

+0

您是否可能將checkIfSurveyExists中的null分配給$ userID var?我無法用你給出的例子重新創建它。 –

回答

2

您沒有返回現有調查。如果它存在,你會錯過如果哪個不返回,這是隱式返回null

+0

這就是我昨天告訴他的:/ – Wranorn

+0

你說他比較真實?他們是不一樣的 – exussum

+0

第二個評論「... getExistingSurvey()不會返回任何東西,除非調查設置將隱式返回NULL」 – Wranorn

1

您正在使用$ survey存儲checkIfSurveyExists()的結果,但檢查$ value爲true。

public function getExistingSurvey($userId) { 
    $survey = $this->checkIfSurveyExists($userId)... 
    if (!$value) { 
     return $this->createSurvey($userId); 
    } 
} 
+0

是的,這是愚蠢的。老實說,運行時代碼沒有這個錯誤。在登錄該網站時,我錯誤地輸入了該網站。我希望這很簡單!任何其他想法? ...(我只是修復了原來的帖子 - 感謝你指出了這一點) –

+0

Theres有幾件事情......但沒有完整的代碼,在黑暗中戳動。例如getExistingSurvey()不會返回任何東西,除非調查被設置爲隱式返回NULL。 – Wranorn

+0

createSurvey:我們所擁有的唯一代碼是userid傳入並返回surveyId,... surveyID如何確定?該函數意味着它創建的調查不會返回調查的ID。 – Wranorn