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

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

<!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

登陆购买课程后可参与讨论,去登陆

1回答
imooc_澈 2018-04-16 14:26:09

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

http://img1.sycdn.imooc.com//climg/5ad441e900015b7f04150201.jpg

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

  • 提问者 SuCrazy #1
    这个我知道,但是在第一个代码里面由post传递后我在输入框里不管输入什么结果都是“请输入正整数”,即使我输入的是2
    2018-04-16 18:21:32
  • 提问者 SuCrazy #2
    我上面有两个代码段,一个是作业里用post传递,一个是我自己测试单独写的,然后两个都令$num=2的是时候第一个代码确实会提示“请输入正整数”,第二个就能判断
    2018-04-16 18:35:47
  • imooc_澈 回复 提问者 SuCrazy #3
    你好,因为post传过来的是字符串,比如你输入了一个5就是字符串“5”,你可以var_dump一下看看,你本意使用is_int其实是为了验证输入的是不是数字,但是is_int验证的是变量是否为整型数据,这样提交过来的字符串就过不了了,is_int放到这里做判断不够合适,使用$num>0&&is_numeric($num)进行判断,大于0且为数字,这样就可以了。
    2018-04-16 18:49:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码