2013-11-21 58 views
-1

任何人都可以解釋如何賦值給變量在php中工作。我有以下代碼不能按預期工作(由我)。將值賦給if條件中的變量在php中

if ($account = $this->getClientAccount($request)) 
{ 
    echo $account; 
} 

如果我使用此代碼帳戶是1,只需一個。怎麼來的??? getClientAccount返回字符串(用戶名),如果未找到用戶,則返回false。當用戶被發現1返回。 如果我移動上面的賦值語句,它工作正常。在將函數返回給if語句中的變量時,我遇到了類似的問題。

編輯

好吧,夥計們,我想我發現了一些,至少東西我們都在這裏。 看看這段代碼:http://codepad.org/QWjwl3vQ 我想你會明白髮生了什麼。試試test1()和test2()

+1

爲什麼分號在if語句條件中?編輯了 – Rikesh

+0

。刪除了該分號。這不是我的代碼實際上 – Jamol

+0

如果可能顯示你的功能。 'getClientAccount',這樣人們可以有更好的想法。 – Rikesh

回答

0

編輯&檢查你的代碼似乎布爾值越過寫在實際值。爲了擺脫這個事情,你需要在每種條件下使用圓括號來進行適當的分配,稱爲Operator Precedence

檢查您編輯的code以使其按預期工作。

+0

你做到了。非常感謝。但我沒有得到爲什麼它沒有額外的支架無法工作 – Jamol

+0

歡迎您!查看我在答案中添加的運算符優先級引用以獲取詳細信息。 – Rikesh

0

第一塊代碼是句法上錯誤。從getClientAccount()函數獲取返回的值從後如果條件

if 
    (
     $account = $this->getClientAccount($request); // <--- This semicolon here must be removed 
    ) 
{ 
    echo $account; 
} 
+0

現在看。編輯 – Jamol

+0

請看看編輯。 – Jamol

-1

刪除分號像下面

if 
(
    $account = $this->getClientAccount($request) 
) 
{ 
    echo $account; 
} 

,並在你的情況下PHP將檢查$值佔變量。如果$賬戶值最終意味着true,那麼它將執行你的echo語句。

,如果您有關於PHP布爾值的任何困惑,那麼你可以嘗試另一種方式:

$account = $this->getClientAccount($request); 
if(strlen($account)>0){ 
    echo $account; 
} 
+0

看看更新後的問題。 – Jamol

0

這根本就不是一個真正的問題並沒有在試圖回答這個問題直接,尤其是如果沒有點您不熟悉PHP語法。

這是OP的處所必須被質疑,而不是他張貼的代碼。

這個代碼將清楚地輸出getClientAccount方法的結果(除非它是0或空數組)。

因此,OP必須再次檢查「代碼實際上是」或驗證getClientAccount函數的實際結果。

+0

請看看編輯。 – Jamol

+0

這個你的新問題與你所問的完全不同。在問問題之前,你必須做出決定。 –

+0

這是完全一樣的東西。仔細閱讀! – Jamol

-1

語法錯誤很少。您需要刪除的分號前面已經提到,您需要更改爲:

$account == $this->getClientAccount($request) 

要檢查狀態,此刻的你正在嘗試$帳戶分配給這個 - $> getClientAccount($請求)導致if語句。如果語句用於檢查條件而不指定值。

另外$帳戶必須有一個值,否則如果該函數返回一個值,您的條件將始終保持爲假。

+0

在本代碼中有**沒有**語法錯誤。 –