【问题标题】:PHP output only one value in for eachPHP 只输出一个值
【发布时间】:2014-06-09 20:15:06
【问题描述】:

我在 PHP 中的每个函数的输出中遇到问题(实际上不知道如何设置代码来执行我需要的操作)。如果 foreach 中的每个项目都等于某个值,我想输出一些文本。如果我把

foreach($items as $item) {
    if($item == 0){ echo "true"; }
}

我将为每个项目都设置为 true,并且只有当所有项目都等于某个值时,我才需要输出 true。

谢谢!

【问题讨论】:

  • 你能提供一个简单的$items来源吗?
  • 您是否要检查数组中的所有元素是否相同?然后就这样做:if (count(array_unique($items)) === 1) { ... }.
  • @AmalMurali 我想这是最简单的方法,但如果他对原始代码有疑问,我们应该提供一些更基本的答案,开发他的原始代码
  • @CatalinDeaconescu:作为评论完全没问题。而且我不同意这一点-如果 OP 当前的方法不好,请说出来,并向他们展示替代方案。修改现有代码以“使其工作”不会有帮助。
  • @AmalMurali 对我来说,编程是学习思考、改进思考过程和逻辑的方式。解决问题总是有更简单的方法,但如果你真正了解它,你可以走得更远。我们可以指点他改进他的职位。但最简单的方法应该添加到最后。为了确保 OP 从我们那里学到了一些东西,而不是从我们这里复制和粘贴。

标签: php if-statement foreach output


【解决方案1】:

这很可能是由于 PHP 类型会影响您的值。您的值可能不是数字,因此当您进行松散比较时 (==),PHP 会将它们转换为整数。不以数字开头的字符串将变为零,您的陈述将是正确的。

要解决此问题,请使用=== 比较运算符。这将比较值 和 类型。所以除非一个值是整数零,否则它将是假的。

if($item === 0){ echo "true"; }

如果您尝试查看所有项目是否都等于某个值,此代码将为您执行此操作:

$equals = 0;
$filtered = array_filter($items, function ($var) use ($equals) {
    return $var === $equals;
});
if (count(count($items) === count($filtered)) {
    echo "true";
}

【讨论】:

  • 这无助于所有项目必须相等的要求。
  • @John 这不是被问到的,似乎人们只是在看声誉时投票
  • 这似乎是真的。我更新了我的答案以说明他们正在寻找什么。
【解决方案2】:
$ok = true;
foreach ($items as $item) 
{
    if ($item != 0)
    { 
        $ok = false;
    }
}
if ( $ok == true)
{
    echo 'true';
}

【讨论】:

    【解决方案3】:
    <?
    $items=array(0,1,2,0,3,4);
    foreach($items as $item) {
        if($item == 0){ echo "true"; }
    }
    ?>
    

    您的代码有效! 检查 $items 数组的来源

    【讨论】:

    • 请在测试代码并发布答案之前正确检查问题
    【解决方案4】:
    $bool = 0;
    foreach($items as $item) {
        if($item == $unwantedValue)
        { $bool=1; break; }
    }
    
    if($bool==0)
    echo 'true';
    

    【讨论】:

      【解决方案5】:
      $equals=true;
      
      foreach($items as $item) {
          if($item!=0)
          {
              $equals=false;
              break;
          }
      }
      if($equals) {
          echo 'true';
      }
      

      【讨论】:

        【解决方案6】:

        这段代码适用于大多数类型的变量。看看它是如何在内联注释中工作的。

         $count=0; // variable to count the matched words
         foreach ($items as $item)
           {
             if($item == $somevalue)
               {
                 $count++; // if any item match, count is plus by 1
               }
           }
         if($count == count($items))
           {
             echo "true"; // if numbers of matched words are equal to the number of items
           }
         else
          {
            echo "false";
          }
        

        希望它有效,如有任何错误,请见谅

        【讨论】:

        • 谢谢,这个答案对我来说是最简单的,效果很好。
        • @Moirae 感谢您使用 PoomrokcSoft 服务... Xb
        【解决方案7】:

        如果你想检查值是否与变量中的某个值相同并打印它使用这个

        <?php 
        $target_check = 7;
        
        $items = array(1, 4, 7, 10, 11);
        
        foreach ($items as $key => $value) {
            if ($value == 7) echo "the value you want is exist in index array of " . $key . '. <br> you can print this value use <br><br> echo $items[' . $key . '];';
        }
        
        
        ?>
        

        但如果您只想检查数组中是否存在该值,您可以使用in_array 函数。

        <?php
        
        $target_check = 2;
        
        if (in_array($target_check, $items)) echo "value " . $target_check . 'found in $items';
        else echo 'sorry... ' . $target_check . ' is not a part of of $items.';
        ?>
        

        【讨论】:

        • 什么!?如果数组中的所有值都相同并且等于某个值,他只想打印“true”。它与 in_array 没有任何关系。抱歉,如果此评论伤害了您的感受,但不符合 OP 的要求。
        • 谢谢。但任务是[如果foreach 中的每个 项都等于某个值,我想输出一些文本。]。所以它只是不打印真实。
        • This 和 This 它仍然说它存在,即使不是每个 itm 都等于 $target_Check。请修复它
        猜你喜欢
        • 2012-02-10
        • 1970-01-01
        • 2016-12-31
        • 1970-01-01
        • 2022-06-22
        • 2014-03-15
        • 2023-04-08
        • 2014-12-29
        • 2016-12-27
        相关资源
        最近更新 更多