1 foreach中的引用(&)
$dataArr = range(1, 5);
foreach ($dataArr as $k => &$value) {
var_dump($value );
}
var_dump('-------------------------');
foreach ($dataArr as $k => $value) {
var_dump($value );
}
打印结果,发现第二次的最后两项是一样的:
int(1)
int(2)
int(3)
int(4)
int(5)
string(25) "-------------------------"
int(1)
int(2)
int(3)
int(4)
int(4)
解决方案: unset()
$dataArr = range(1, 5);
foreach ($dataArr as $k => &$value) {
var_dump($value );
}
unset($value);//unset 掉最后一个引用
var_dump('-------------------------');
foreach ($dataArr as $k => $value) {
var_dump($value );
}
再次打印:
int(1)
int(1)
int(2)
int(3)
int(4)
int(5)
string(25) "-------------------------"
int(1)
int(2)
int(3)
int(4)
int(5)
array_merge Null ,一般的框架会处理的,原生方式可能会出现
array_merge — 合并一个或多个数组
$arr1 = [
'a',
'b',
'c',
];
$arr2 = [
'c',
'd',
'f',
];
$arr3 = null;//可能从某个对象中获取的值,如果不加处理会返回类似数据
error_reporting(0);
var_dump(array_merge($arr1,$arr2,$arr3));
打印结果:
NULL
解决方案:
方式1:开发的时候错误等级使用:
ERR_ALL
如下:
error_reporting(E_ALL);
此时运行程序,好歹有了提示:
PHP Warning: array_merge(): Argument #3 is not an array in F:\Visual-NMP-x64\www\tutorial\demo\01\test.php on line 17
Warning: array_merge(): Argument #3 is not an array in F:\Visual-NMP-x64\www\tutorial\demo\01\test.php on line 17
NULL
方式2:判断是否为NULL,或者类型转换一下
代码:
error_reporting(E_ALL);
var_dump(array_merge($arr1, $arr2, (array)$arr3));
此时恢复正常:
array(6) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "c"
[4]=>
string(1) "d"
[5]=>
string(1) "f"
}
提示:数字键名将会被重新编号!
字符的数字和数字比较
例如:
var_dump('200abc' == 200);
打印结果:
bool(true)
采用类型转换一下:
var_dump('200abc' == (string)200);
打印结果:
bool(false)
count函数传入字符
如果集合数据不处理,可能会出现一下情况:
var_dump(count(false));
var_dump(count(null));
打印结果:
int(1)
int(0)
不用说了,类型提前处理.
filesize缓存
例如:
<?php
$fileName = 'city.txt';
file_put_contents($fileName, json_encode(range(1, 5)));
var_dump(filesize($fileName));
file_put_contents($fileName, json_encode(range(1, 100000)));
var_dump(filesize($fileName));
打印结果,文件大小一样:
int(11)
int(11)
解决方式 clearstatcache()
:
<?php
$fileName = 'city.txt';
file_put_contents($fileName, json_encode(range(1, 5)));
var_dump(filesize($fileName));
clearstatcache();//清除缓存
file_put_contents($fileName, json_encode(range(1, 100000)));
var_dump(filesize($fileName));
打印结果:
int(11)
int(588896)
暂时想了这么多,先写到这里~~
网友评论