php开发中遇到的坑

本文用于记载个人在开发中遇到的坑

js对json 对象数字键值自动排序,直接贴代码

'dsads',1=>'dsds', 'b' => 'dsdsds', 'a'=> '100001');
echo json_encode($a);
$str = '';
echo $str;
exit;    

页面输出如下

{"2":"dsads","1":"dsds","b":"dsdsds","a":"100001"}

控制台打印结果如下

{1: "dsds", 2: "dsads", b: "dsdsds", a: "100001"}

php的json_decode输出问题

json_decode('php')=> null// 对非 json 字符串并非返回 null 
json_decode('0x123')=> 291

php 中foreach

具体原理可参考 该文章

';
foreach ($arr as &$v) {
        
}
//循环结束后 $v=&$arr[2];
var_dump($arr);
foreach ($arr as $v) {
        
}
var_dump($arr);
//输出结果如下
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  &int(3)
}
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  &int(2)
}

解决方法

 foreach ($arr as &$v) {
        
        }
        var_dump($arr);
        unset($v); //方法1  删除指针
        foreach ($arr as $v1) {//方法2重新找个变量
        
        }
        foreach($arr as &$v){// 方法3 指针重置
        }

浮点精确问题

这个浮点数精确问题存在于编程语言,原因是因为 有穷的小数, 在计算机的二进制表示里却是无穷的 跳转到鸟哥博客

使用bc函数进行操作

bcadd: 将二个高精确度数字相加。
bccomp: 比较二个高精确度数字。
bcdiv: 将二个高精确度数字相除。
bcmod: 取得高精确度数字的余数。
bcmul: 将二个高精确度数字相乘。
bcpow: 求一高精确度数字次方值。
bcscale: 配置程序中所有 BC 函数库的默认小数点位数。
bcsqrt: 求一高精确度数字的平方根。
bcsub: 将二个高精确度数字相减。

你可能感兴趣的:(php开发中遇到的坑)