【问题标题】:if (x > 0) outputting 0 how to output nothing?if (x > 0) 输出 0 如何什么都不输出?
【发布时间】:2012-10-12 22:49:47
【问题描述】:

我希望我没有重复这个主题我确定它在这里我只是找不到它。

我的产品有很多尺寸,这些尺寸的可用性存储在数据库中,例如0 = 没有库存,1 及更多 = 有库存。

如果不可用,我希望尺寸不在下拉列表中显示。当 1 个或更多可用时,它们会显示...我可以在 1 个或更多时显示大小,但在 =“0”时显示“0”,我理解但不知道如何不显示。认为我在那里的解释过于复杂:S

$size_available = "";
$size_6w = $row["size_6w"];
$size_7w = $row["size_7w"];
$size_8w = $row["size_8w"];

$dropdown = "<select class='product-select' name='size' id='size'>";

if ($size_6w > 0) {
    $size_6w = "6w";
}
if ($size_7w > 0) {
    $size_7w = "7w";
}
if ($size_8w > 0)
    $size_8w = "8w";
}

$size=array("$size_6w","$size_7w","$size_8w");

foreach ($size as $size_available)
{
    $dropdown .= "<option value='$size_available'>$size_available</option>";
}

$dropdown .= "\r\n</select>";

输出是一个简单的回声:

echo $dropdown

我应该使用 else 语句吗?如果是这样,您如何建议我使用它来输出任何内容?

谢谢

【问题讨论】:

  • 感谢大家的建议,我会玩一玩看看我的表现,并将我的“更新为';)

标签: php if-statement foreach


【解决方案1】:

检查大小是否大于或等于 1,然后才向用户显示选项。

这是我将如何实现的:

<?php

$sizes = array(
    '6w' => $row["size_6w"],
    '7w' => $row["size_7w"],
    '8w' => $row["size_8w"]
);

$dropdown = "<select class='product-select' name='size' id='size'>";

foreach ($sizes as $size => $available)
{
    if ($available >= 1)
        $dropdown .= "<option value='$size'>$size</option>\n";
}

$dropdown .= "\r\n</select>";

【讨论】:

  • 我最终选择了 Alex 建议的代码。效果很好!谢谢亚历克斯。
【解决方案2】:

这就是我要做的。

$sizes = array();
if ($row["size_6w"] > 0) $sizes[] = '6w';
if ($row["size_7w"] > 0) $sizes[] = '7w';
if ($row["size_8w"] > 0) $sizes[] = '8w';

if (!empty($sizes)) {
    $options = "<select class='product-select' name='size' id='size'>\n";
    foreach ($sizes as $size)
        $options .= "<option value='$size'>$size</option>\n";
    $options .= "</select>\n";
} else $options = "<div id='size' class='noResult'>0</div>\n";

【讨论】:

    【解决方案3】:

    您可以编写一个循环来检查$row 的特定值,而不是使用一堆条件:

    // this attempts to simulate the database row data
    $row = array(
            'size_6w' => 1,
            'size_7w' => 0,
            'size_8w' => 2,
            'x' => 123, // field thrown in to illustrate the workings
    );
    
    $sizes = array();
    foreach ($row as $field => $value) {
            // column should start with 'size_' and the value should be more than 0
            if (0 != strncmp($field, 'size_', 5) || !$value) {
                    continue;
            }
            $size = substr($field, 5);
            echo sprintf('<option value="%s">%s</option>', $size, $size);
    }
    

    【讨论】:

    • 太棒了,谢谢,我知道会有更简单的方法来做到这一点,但我仍然在思考问题。
    【解决方案4】:
    if ($size_6w > 0) {
        $size_6w = "6w";
        array_push($size, "6w");
        }
    if ($size_7w > 0) {
        $size_7w = "7w";
        array_push($size, "7w");
        }
    if ($size_8w > 0) {
        $size_8w = "8w";
         array_push($size, "8w");
        }
    
    //$size=array("$size_6w","$size_7w","$size_8w");
    

    【讨论】:

      【解决方案5】:
      $size=array($size_6w,$size_7w,$size_8w);
      if(!empty($size))
      {
      foreach ($size as $size_available)
              {
                if(!empty($size_ailvaable)
                {
                  $dropdown .= "<option value='$size_available'>$size_available</option>";
                }
              }
      }
      }
      $dropdown .= "\r\n</select>";
      

      【讨论】:

      • 你不应该在像"$size_6w"这样的变量周围加上双引号。
      • 是的,我原本打算在问题中添加该评论,但认为您的答案会更好。
      • :) 他下次我会注意的
      【解决方案6】:

      如果我猜对了,您可能希望像这样更改您的代码:

      $size = array(); //initialize size array
      if ($size_6w > 0) {
          $size_6w = "6w";
          $size[] = $size_6w;
      }
      if ($size_7w > 0) {
          $size_7w = "7w";
          $size[] = $size_7w;
      }
      if ($size_8w > 0) {
          $size_8w = "8w";
          $size[] = $size_8w;
      }
      
      $size=array("$size_6w","$size_7w","$size_8w"); //remove this line in your code.
      

      这样,如果它的值大于 0,它只会将大小包含到您的 $size 数组中。

      【讨论】:

      • 你的逻辑有缺陷。你在最后一行重新定义了$size
      • @Mike 查看该行后面的评论。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2021-02-20
      • 1970-01-01
      • 2022-12-17
      • 2012-08-05
      相关资源
      最近更新 更多