2016-06-13 42 views
-5

你好我正在熟悉PHP,我想知道爲什麼這段代碼不起作用,並且有沒有其他方法可以使它工作,即:可以通過哪種方式來完成。爲什麼不通過這個PHP代碼工作,我該如何糾正它?

<?php 
`$`fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); 

reset(`$`fruit); 
foreach(`$`fruit as `$`key => `$`val){ 
if((`$`key=="a" && `$`val=="apple") && (`$`key=="b" && `$`val=="banana")){ 
echo "apple and banana"; 
} 
} 
?> 
+5

這是什麼\'$ \'? – AbraCadaver

+3

你可以通過編寫有效的PHP語法來修復它,而不是在反引號('\'') –

+0

中包裝每一個'$'是的不知道爲什麼你要在所有地方使用反引號 – dbmitch

回答

2

試試這個

<?php 
$fruit = array('a' => "apple", 'b' => "banana", 'c' => "cranberry"); 

reset($fruit); 
foreach($fruit as $key => $val) 
{ 
    if(($key=='a' && $val=="apple") || ($key=='b' && $val=="banana")) 
    { 
     echo "apple and banana"; 
    } 
} 
?> 

正如其他人所說的,當你寫PHP,你不應該圍繞西吉特($)用引號。

其他然後修復這個問題,我注意到另一個問題。當循環訪問數組時,$key變量一次只能處理一個元素。爲了讓你的程序,如果條件是真實的,你需要$關鍵變量有在同一時間兩個值:

if(($key=="a" && $val=="apple") && ($key=="b" && $val=="banana")) 

通知的&&。你在說$key必須同時等於「a」和「b」。 $ val同時也必須等於「apple」和「banana」。這種情況是不可能的。

想想這樣。變量是你的手。你的手每次只能容納一件東西。 $key是你的左手,而$val是你的權利。如果我告訴你,如果你左手拿兩件東西,右手拿兩件東西,那麼你只能進入我的房間,你會對我說,那是不可能的!我只能左手拿一件東西,而右手只能拿一件東西。這是一個愚蠢的比喻,但也許會有所幫助。

無論如何,這就是爲什麼我將&&更改爲||。在我的代碼中,您可能會注意到我如何將數組標識符(a,b,c)從單引號括起來變成雙引號。這只是我的風格。我喜歡這樣做。

無論如何,我希望這有助於。對不起,如果有拼寫錯誤,我很匆忙,不得不去。

+1

很好的回答,但是你的輸出語句應該是'echo'蘋果或香蕉';' –

+0

謝謝你的解釋 – dziedzorm

+0

@JeffPuckettII哈哈,謝謝。我甚至沒有注意到這一點。 – Jwags

0

不需要背部抽搐。

<?php 
    $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); 
    reset($fruit); // Why? 
    foreach($fruit as $key => $val){ 
    // this will never be true. Guessing you want a or 
    if(($key=="a" and $val=="apple") and ($key=="b" and $val=="banana")){ 
     echo "apple and banana"; 
    } 
    } 
?> 
+0

'if(($ key ==「a」...)和($ key ==「b」...'永遠不會評估爲真。 –

+0

非常感謝 – dziedzorm

相關問題