为何下面两个代码的结果不一样?

来源:2-12 作业题

SuCrazy

2018-04-15 15:43:53

<!DOCTYPE html>

<html dir="ltr">

  <head>

    <meta charset="utf-8">

    <title>金字塔和空心菱形</title>

  </head>

  <body>

  <form class="" action="#" method="post">

  <input type="text" name="num" value="" placeholder="请输入正整数...">

  <br/>

  <input type="submit" name="pra" value="金字塔">

  <input type="submit" name="dia" value="空心菱形">

  </form>

  <?php

  error_reporting(E_ALL&~E_NOTICE);

  header('content-type:text/html;charset=uft-8');

  $num=$_POST['num'];

  $pra=$_POST['pra'];

  $dia=$_POST['dia'];

  //金字塔形

  if ($pra) {//判断是否为金字塔

    if ($num>0&&is_int($num)){

      for ($i=1;$i<=$num; $i++) {

        //输出空格

        for ($j=$num-$i;$j>0;$j--) {

          echo '<span style="color:#FFF">*</span>';

        }

        //输出*号

        for ($k=1;$k<=2*$i-1 ;$k++) {

          echo "*";

        }

        echo '<br/>';

      }

    }else{

      exit('请输入正整数');

    }

  }

在这里会永远提示“请输入正整数”

<?php

$num=2.2;

if ($num>0&&is_int($num)){

  for ($i=1;$i<=$num; $i++) {

    //输出空格

    for ($j=$num-$i;$j>0;$j--) {

      echo '<span style="color:#FFF">*</span>';

    }

    //输出*号

    for ($k=1;$k<=2*$i-1 ;$k++) {

      echo "*";

    }

    echo '<br/>';

  }

}else{

  exit('请输入正整数');

}

var_dump($num);



 ?>

而在这个代码中程序就能很好的执行判断

写回答

1回答

imooc_澈

2018-04-16

您好,如下图,因为您将$num赋值为2.2,无法通过is_int($num)的判断,代码就会执行else语句块,输出请输入正整数的提示

http://img.mukewang.com/climg/5ad441e900015b7f04150201.jpg

如果解决了你的问题,请采纳,祝学习愉快~

0
huCrazy
回复
hmooc_澈
h 哦哦,明白了,多谢了
h018-04-16
共5条回复

0 学习 · 2569 问题

查看课程