那些值得思考的PHP问题

那些值得思考的PHP问题

  • 1、关于弱类型

    函数strpos是返回字符串str2在str1的位置,没有找到则返回false,然而如果在实际应用上返回的位置是0,在if语句中0也被当作false,所以我们需要对false做类型判断,

    $str1 = 'yabadabadoo';
    $str2 = 'yaba';
    if (strpos($str1,$str2)!==false) {  
      echo $str1 . " contains " . $str2 ;
    } else {
      echo  $str1 . "does not contain ".$str2 ;
    }
    //输出 yabadabadoo does not contain yaba
    
    //改进部分
    strpos($str1,$str2) !== false
    //输出 yabadabadoo contains yaba
  • 2、关于运算符的优先级

    关于 x++ x–这个问题其实非常容易遇见,我们只需记住$x++使用最近的值,然后才自增。

    运算符的优先级,++ 是明显高于 +,因此先执行++ 再执行 + 。关于运算符的优先级,有的时候我们真的可以通过括号来让我们的程序更让人直观的了解,毕竟代码不光是用于执行的,有的时候或许团队的可读性也是提高效率的一种。

    echo $x;  
    echo " ";  
    echo $x+++$x++;  
    echo " ";  
    echo $x;  
    echo " ";  
    echo $x---$x--;  
    echo " ";  
    echo $x;
    //结果 5  11 7 1 5
  • 3、关于变量的引用

    $a = '1';
    $b = &$a;
    $b = "2$b";
  • 4、关于等号和恒等号

    //下面是true还是false
    var_dump(0123 == 123);  // false,PHP会默认把0123当作8进制来处理,实际转化为10进制就是83,显然这不是相等的。
    var_dump('0123' == 123);  // true这里php会非常有趣的将’0123′转换成一个数字而且默认去掉了前面的0也就是123==123
    var_dump('0123' === 123);// false很显然上面的问题已经说过了数字和字符串类型不一致。
  • 5、关于自动转换,如果我们在与字符串进行数学运算,实际php会尽可能将字符串中的数组进行转换,如果是数字开头的话则转换成改数字比如”15%”会变成15,如果不是数字开头则会变成0。

    $x = 3 + "15%" + "$25"
    //等同于
    $x = 3 + 15 + 0
  • 6、字符串用数组的形式访问

    $text = 'John ';
    $text[10] = 'Doe';
    //运行结果为 John     D
    //$text = “John D”(John后面会有连续的5个空格) strlen($text)会返回11,$text[10] = “Doe”给某个字符串具体的某个位置具体字符时候,实际只会把D赋给$text. 虽然$text才开始只有5个自负长度,但是php会默认填充空格
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值