本文用于记载个人在开发中遇到的坑
js对json 对象数字键值自动排序,直接贴代码
<?php
$a = array('2'=>'dsads',1=>'dsds', 'b' => 'dsdsds', 'a'=> '100001');
echo json_encode($a);
$str = '<script>console.log ( ' . json_encode($a) . ' )</script>';
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
具体原理可参考 该文章
<?php
$arr = [1, 2, 3];
echo '<pre>';
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: 将二个高精确度数字相减。
网友评论