1 foreach中的引用(&)
$dataArr = range(1, 5);
foreach ($dataArr as $k => &$value) {
var_dump($value );
}
var_dump('-------------------------');
foreach ($dataArr as $k => $value) {
var_dump($value );
}
打印結(jié)果,發(fā)現(xiàn)第二次的最后兩項是一樣的:
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 ,一般的框架會處理的,原生方式可能會出現(xiàn)
array_merge — 合并一個或多個數(shù)組
$arr1 = [
'a',
'b',
'c',
];
$arr2 = [
'c',
'd',
'f',
];
$arr3 = null;//可能從某個對象中獲取的值,如果不加處理會返回類似數(shù)據(jù)
error_reporting(0);
var_dump(array_merge($arr1,$arr2,$arr3));
打印結(jié)果:
NULL
解決方案:
方式1:開發(fā)的時候錯誤等級使用:
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,或者類型轉(zhuǎn)換一下
代碼:
error_reporting(E_ALL);
var_dump(array_merge($arr1, $arr2, (array)$arr3));
此時恢復(fù)正常:
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"
}
提示:數(shù)字鍵名將會被重新編號!
字符的數(shù)字和數(shù)字比較
例如:
var_dump('200abc' == 200);
打印結(jié)果:
bool(true)
采用類型轉(zhuǎn)換一下:
var_dump('200abc' == (string)200);
打印結(jié)果:
bool(false)
count函數(shù)傳入字符
如果集合數(shù)據(jù)不處理,可能會出現(xiàn)一下情況:
var_dump(count(false));
var_dump(count(null));
打印結(jié)果:
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));
打印結(jié)果,文件大小一樣:
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));
打印結(jié)果:
int(11)
int(588896)
暫時想了這么多,先寫到這里~~