【问题标题】:If statement in foreach loop not working correctlyforeach 循环中的 if 语句无法正常工作
【发布时间】:2011-11-08 18:37:06
【问题描述】:

我有一个 foreach 循环,其中有一个 if 语句,因此如果 $value 等于 'Messages' 它应该将我的变量 num1 增加 1,但 if 语句似乎不起作用正确。任何帮助将不胜感激。

编辑:如果我去掉 if 语句并回显 $value,它将回显数组中每个部分的值。

代码:

 <?php
     $num1 = 0;
     foreach($inventory['Category'] as $key => $value) {
         if ($value == 'Messages') {  
             $num1++;  
         }
     }
 ?>

【问题讨论】:

  • 尝试在循环中只使用 var_dump($value == 'Messages') 而不是 if - 如果它在应该返回 true 时返回 false,则比较中有问题。然后,您可以尝试 var_dump($value) 来缩小该变量返回的范围。
  • 您确定 $value 将包含完全“消息”吗?我的意思是,没有空间或其他任何东西?做一个 var_dump 来仔细检查。
  • 你能在 `$inventory['Category'] 上做一个var_dump() 来验证任何值首先是消息吗?否则代码看起来很好。
  • 出于好奇,关键是什么?
  • 我不确定您要做什么,但array_count_values 可能对您有用。

标签: php loops foreach


【解决方案1】:

$num1 没有增加的唯一原因可能是因为$value 不是“消息”。尝试回显$value 变量并查看。

【讨论】:

    【解决方案2】:

    您确定不想这样做:

    <?php
     $num1 = 0;
     foreach($inventory as $key => $value) {
             if ($value == 'Messages') {  $num1++;  }
     }
     ?>
    

    如果你的数组有一个名为$inventory['Messages'] 的键,它会找到它。您的原始示例查找 $inventory['Category']['Messages']。

    【讨论】:

    • 这将在数组$inventory 中找到值Messages。这不会找到$inventory['Messages'] - 为此,它需要将$key 与'Messages' 进行比较,而不是$value。因此,OP 的原始样本不会寻找 $inventory['Category']['Messages']。
    猜你喜欢
    • 2015-03-14
    • 2021-05-30
    • 2014-09-27
    • 1970-01-01
    • 2012-08-21
    • 2019-10-09
    • 2015-02-13
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多