你好我熟悉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";
}
}
?>
答案 0 :(得分: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时,你不应该用引号括起sigit($)。
除了解决这个问题之外,我注意到了另一个问题。循环遍历数组时,$key
变量一次只能处理一个元素。为了让你的程序条件为真,你需要$ key变量同时有两个值:
if(($key=="a" && $val=="apple" ) && ($key=="b" && $val=="banana"))
注意&&
。你是说$key
必须同时等于“a”和“b”。 $ val也必须同时等于“apple”和“banana”。这种情况是不可能的。
这样想。变量就是你的手。你的手一次只能握一件东西。 $key
是你的左手,$val
是你的权利。如果我告诉你,如果左手拿着两件东西,右手拿着两件东西,你只能进入我的房间,你会告诉我,这是不可能的!我只能在左手拿一件东西,右手拿一件东西。这是一个愚蠢的比喻,但也许会有所帮助。
无论如何,这就是我将&&
更改为||
的原因。在我的代码中,您可能会注意到我将数组标识符(a
,b
,c
)从单引号括起来更改为双引号。这只是我的风格。我喜欢这样做。
无论如何,我希望这会有所帮助。对不起,如果有任何拼写错误,我很匆忙,不得不离开。
答案 1 :(得分: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";
}
}
?>