2016-06-13 64 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

相关问题