重點內容變數宣告在使用
foreach 迴圈要注意賦值,特別是裡面有if 判斷時;
eg :
$arr = [
['id'=>1, 'name' => 'hhee'],
['id'=>0, 'name' => 'hhee0'],
['id'=>3, 'name' => 'hhee0'],
['id'=>4, 'name' => 'hhee0'],
]$result = $temp = array();
foreach($arr
as$v)
$result = $temp;
}
ok 這裡就出問題了
$result = [
['title' => '***'],
['title' => '***', 'extra' => 'extra'],
['title' => '***', 'extra' => 'extra'],
['title' => '***', 'extra' => 'extra'],
];
這就有可能跟我們預期的不一樣了
變數型別,比如count(xx) , 如果xx 不是陣列,返回的結果為1,有時候我們從緩訪問資料,可能因為key 不存在,返回false , 如果這時候你把它當陣列使用,就會出問題
快取key 不存在,返回false ,如果你業務 存進去就是乙個bool ,這時候就會出問題.
array_push(ar
r,′x
xx′)
, arr 必須是陣列
array_merge引數必須都是陣列,否則報錯,如果在生產環境,一般遮蔽了報錯,這時候得到的結果就是乙個bool 的false
變數比較,php 是弱型別語言,比如
1 == '1'
true
1 == '1a'
true
'1a' 會被轉換成整型(1),
false == '0'
true
false == '0q'
true
strpos() , 這個函式,可能返回0 ,表示在第0個位置匹配到了子字串,所以不能直接if(!strpos('***','x')){}, 而是 if(strpos('***','x')!==false){}
切記 如果要做型別比較的時候,注意類換轉換問題
if 做邏輯判斷的時候
if(a == 1)
elseif(a == 3)
這**可能就會出現bug,最好是補全else這個分支
注意return, 乙個方法最好只返回一種資料結構
if(a == 0)elseif(a == 1)elseif(a < 0 )
return
false;
以上這種寫法是錯誤的,呼叫這個函式的人,就要去判斷多種情況,很容易產生bug,應該統一返回的資料結構。 比如array('ok' => , 'msg' => 'msg' , 'data' => 'data')
, 類似這種型別,具體情況具體分析。
try catch 問題
try
catch(exception $e)
db::commit();
這裡要注意,try 裡面如果出現異常,那麼就會rollback ,事務已經不存在了,這時候在commit 就會出錯
**提交
我們在使用svn , 或者git 的時候,提交的時候一定要注意在檢查一遍,因為你在本地開發,可能有些檔案需要根據本地環境進行適當修改,如果不小心提交上去了,那麼測試環境,肯定會出現錯誤,如果一不小心合到online版本,那麼可能就是個災難了,線上環境就會出錯!(我就差點出現這個錯誤。還好在效能測試階段發現了)
如何減少換頁錯誤?
有這麼一道筆試題 如何減少換頁錯誤?1,程序傾向於占用cpu 2,訪問區域性性 localilty of reference 滿足程序要求 3,程序傾向於占用i o 4,使用基於最短剩餘時間 shortest remaining time 的排程機制 5,減少頁大小 yathing最先排出1和3選項...
如何減少Outlook占用空間
你是否會發現,在刪除大量email的時候發現pst檔案占用容量根本沒有減少。那麼如何才能真正減少pst檔案的占用空間呢?很簡單,outlook中刪除了郵件,即使用 徹底刪除 也不是真正的刪除該郵件,只是在pst檔案中對應該郵件的地方做個標記而已。pst的 壓縮 功能可以將這些被刪除的郵件所占用的空間...
如何減少silverlight XAP包的尺寸
這次得到了乙個做silverlight應用開發的機會,在發布時遇到 xap 包太大的問題,上網看了半天,最後把微軟的這個文件 如何使用應用程式庫快取 翻來覆去看了半天,終於搞明白了它說的內容,暈啊,真應了 會者不難 這句老話。最後決定把這個其實很簡單的東西總結一下,避免別的新學者浪費時間。開發場景 ...