【问题标题】:PHP code is not running before loop [duplicate]PHP代码在循环之前没有运行[重复]
【发布时间】:2017-02-18 05:51:30
【问题描述】:
<?php
$date = '2017-08-22';
$year = substr($date, 0, 4);
$month = substr($date, 5, 2);
$day = substr($date, 8, 2);
?>

<select>
<?php
for ($i=1; $i < 30; $i++) { ?>
<option value="<?php echo $i; ?>" <?php if($day === $i){ echo "selected"; }; ?>><?php echo $i; ?></option>
<?php } ?>

</select>

代码没有执行,因为substr 在 for 循环之前没有运行。应该在第 22 天选择选择,但它没有选择任何东西。如果我更改$day = 22;,它会起作用。如何用子字符串解决这个问题?

【问题讨论】:

  • 如果日期是2017-02-22,那么Feb 呢?你会考虑一个月中的几天吗?
  • 您从日期开始获取年、月、日的逻辑也不好。认真的
  • @Rishi 你是什么意思?
  • 我的意思是不。整个月的天数不是30,八月是一个月31 天数不是30
  • 如果你看到你的下拉菜单,你只会看到29,对吗?

标签: php html loops for-loop substr


【解决方案1】:

你正在做=== 这是一个严格的匹配,因为你的年/月/日都是字符串,你的一天永远不会工作。你需要使用==

'22' === 22; // false
'22' == 22; // true

【讨论】:

    【解决方案2】:

    试试这个

    你只要在&lt;option&gt;标签里面改下面这行就行了。

    if($day === $i)
    

    if($day == $i)
    

    【讨论】:

      【解决方案3】:

      substr 之后尝试var_dump $day 看看会发生什么。即,您正在使用=== 三等号比较,它也将检查类型。 substr 返回一个字符串,并且您将它与一个整数进行比较,因此条件永远不会为真。

      【讨论】:

        【解决方案4】:

        是的,我评论了一些问题,您可以使用下面的代码来修复

        <?php
            $date = '2017-08-22';
            $dateSec = strtotime($date);
            $year = date("Y",$dateSec);
            $month = date("m",$dateSec);
            $day = date("d",$dateSec);
            $day_in_month = date("t",$dateSec);
            echo "<select>";
            for ($i=1; $i <= $day_in_month; $i++) {
                    $selected = ($day==$i) ? ' selected ':'';
                    echo "<option $selected value='$i'>$i</option>";
            }
            echo "</select>";
        ?>
        

        【讨论】:

          【解决方案5】:

          当您通过=== 比较值时会出现问题,因为您要比较的值不包含相同的数据类型。 $day 包含“string”数据类型,'$i' 包含“int”数据类型。

          所以,为了解决这个问题,有以下两种可能的解决方案,尝试任何一种:

          要么你使用==而不是===,就像这样:

          if($day == $i)
          

          $day, $month &amp; $year变量赋值时使用(int)数据类型,就像这样:

          $day = (int)substr($date, 8, 2);
          

          希望对你有帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-06-26
            • 2021-08-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多