【问题标题】:Why wont this php code work and how do i rectify it?为什么这个 php 代码不起作用,我该如何纠正它?
【发布时间】:2016-06-13 21:37:59
【问题描述】:

你好,我对 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";
}
}
?>

【问题讨论】:

  • 这到底是什么`$` ???
  • 您可以通过编写有效的 PHP 语法来修复它,而不是将每个 $ 包装在反引号中 (`)
  • 是的,不知道你为什么到处使用反引号
  • 那么您在 if 语句中使用 &amp;&amp;。现在key怎么可能同时是2个值呢?
  • 你能澄清一下你所说的“不起作用”是什么意思吗?你想达到什么目的?如果您知道自己的目标是什么,那么到达那里会容易得多!

标签: php arrays multidimensional-array


【解决方案1】:

试试这个

<?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 变量一次只能处理一个元素。为了让您的程序 if 条件为真,您需要 $key 变量同时具有两个值:

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

注意&amp;&amp;。您是说$key 必须同时等于“a”和“b”。 $val 还必须同时等于“apple”和“banana”。这个条件是不可能的。

这样想。变量是你的手。你的手一次只能握住一件东西。 $key 是你的左手,$val 是你的右手。如果我告诉你,只有左手拿着两件东西,右手拿着两件东西,你才能进入我的房间,你会跟我说,那是不可能的!我的左手只能拿一件东西,右手只能拿一件东西。这是一个愚蠢的类比,但也许会有所帮助。

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

无论如何,我希望这会有所帮助。很抱歉,如果有任何拼写错误,我很着急,不得不去。

【讨论】:

  • 很好的答案,但你的输出语句应该是echo "apple OR banana";
  • @JeffPuckettII 哈哈,谢谢。我什至没有注意到。
【解决方案2】:

不需要背部抽动。

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

【讨论】:

  • if(($key=="a" ... ) and ($key=="b" ... 永远不会评估为真。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2018-11-05
  • 2012-02-22
相关资源
最近更新 更多