• PHP中字符串类型与数值类型混合计算


    字符串转数值的规则

    当一个字符串被当作一个数值来取值,其结果和类型如下:

    如果该字符串没有包含 ‘.’,’e’ 或 ‘E’ 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成 integer 来取值。其它所有情况下都被作为 float 来取值。

    该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 ‘e’ 或 ‘E’ 后面跟着一个或多个数字构成。

    如下会被转成整数:

    [+/-][0-9][*]

    如下会被转成浮点型数:

    [+/-][0-9][.][0-9][e/E][0-9][*]

    示例

    $r = '123' + 1;
    var_dump($r);
    // 输出结果 int(124)
    
    $r = '123.4' + 1;
    var_dump($r);
    // 输出结果 float(124.4)
    
    $r = '1.5e4' + 1;
    var_dump($r);
    // 输出结果 float(15001)
    
    $r = '123456789123456789' + 1;
    var_dump($r);
    // 输出结果 float(1.2345678912346E+17)
    
    
    $r = '123abc' + 1;
    var_dump($r);
    // 输出结果 int(124)
    
    $r = '123e1abc' + 1;
    var_dump($r);
    // 输出结果 float(1231)
    
    $r = '123.abc' + 1;
    var_dump($r);
    //输出结果 float(124)
    
    
    $r = '+123abc' + 1;
    var_dump($r);
    // 输出结果 int(124)
    
    $r = '-123abc' + 1;
    var_dump($r);
    // 输出结果 int(-122)
    
    
    $r = 'abc' + 1;
    var_dump($r);
    // 输出结果 int(1)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    更好的方式

    已经确定需要的是整数(浮点数),则可以使用intval()floatval())先将字符串转换成整数(浮点数),然后再与其他数值进行计算。

    判断字符串是否为整数

    HTTP GET/POST提交的数据,可以通过该方式进行校验。

    $str = '123';
    $r = ''.intval($str) == $str; //需要将字符串转成整形然后再变回去,再和原字符串做比较
    var_dump($r);
    // 输出结果 true
    
    $str = '123abc';
    $r = ''.intval($str) == $str;
    var_dump($r);
    // 输出结果 false


    原文地址:http://blog.csdn.net/zhyoulun/article/details/52596532
  • 相关阅读:
    优化MyBatis配置文件中的配置
    Java多线程---同步与锁
    Runtime.getRuntime().exec()
    java ---线程wait/notify/sleep/yield/join
    redis配置详情
    httpcline
    线程
    Bootstrap学习(一)
    springmvc注解配置
    salesforce上上传和导出.csv格式文件
  • 原文地址:https://www.cnblogs.com/xiaommvik/p/6266245.html
Copyright © 2020-2023  润新知