php一些坑

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)

暫時想了這么多,先寫到這里~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,527評論 19 139
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,896評論 0 33
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,331評論 6 13
  • 文/左泉 我想用刀子刻一枚印章 把人類犯過的錯 造過的孽 通通證實 然后一筆一筆 刻在巖石上 刻在龜殼上 刻在世人...
    左泉閱讀 333評論 0 3
  • 互聯(lián)網(wǎng)金融作為新興行業(yè),是傳統(tǒng)金融機構(gòu)與互聯(lián)網(wǎng)企業(yè)利用信息通信技術(shù)和互聯(lián)網(wǎng)技術(shù)實現(xiàn)資金融通、支付、投資、信息中介服...
    吉盟財富公司閱讀 304評論 0 0

友情鏈接更多精彩內(nèi)容