为什么这个PHP代码不起作用,我该如何纠正呢?

时间:2016-06-13 21:37:59

标签: php arrays multidimensional-array

你好我熟悉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";
}
}
?>

2 个答案:

答案 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是你的权利。如果我告诉你,如果左手拿着两件东西,右手拿着两件东西,你只能进入我的房间,你会告诉我,这是不可能的!我只能在左手拿一件东西,右手拿一件东西。这是一个愚蠢的比喻,但也许会有所帮助。

无论如何,这就是我将&&更改为||的原因。在我的代码中,您可能会注意到我将数组标识符(abc)从单引号括起来更改为双引号。这只是我的风格。我喜欢这样做。

无论如何,我希望这会有所帮助。对不起,如果有任何拼写错误,我很匆忙,不得不离开。

答案 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";
    }
  }
?>