當前位置:才華齋>計算機>php語言>

PHP常用開發技巧

php語言 閱讀(3.04W)

PHP開發常用技巧能使你在開發過程中快而有效.以下就是小編精心推薦PHP常用開發技巧,希望對大家有幫助!

PHP常用開發技巧

1 使用do while避免多層if語句巢狀

我們直接舉例說明:

實現方式①

if ($name == 'hedong') { if ($sex == 'male') { if ($major == 'PHP') { $ret = '河東個牛逼的人'; } else { $ret = '沒學的河東PHP,貌似就不那麼牛逼了'; } } else { $ret = '河東是個pretty girl'; }} else { $ret = '你不是河東,免談!';}

實現方式②

do { if ($name != 'hedong') { $ret = '你不是河東,免談!'; break; } if ($sex != 'male') { $ret = '河東是個pretty girl'; break; } if ($sex != 'PHP') { $ret = '沒學PHP的河東,貌似就不那麼牛逼了'; break; } $ret = '河東個牛逼的.人';} while (false);

雖然實現方式①和② 都可實現相同的功能,但方式②明顯更有條理性,實戰中推薦使用。

2 有些內建函式可以替代foreach迴圈

有時候不一定非得使用foreach,有更好的PHP內建陣列函式處理陣列,如使用array_map()和array_reduce()替代foreach迴圈。

1) 使用array_reduce(array $array , callable $callback )函式,用回撥函式迭代地將陣列簡化為單一的值。

① 使用array_reduce()替代foreach()迴圈最常用的一個業務場景也許就是陣列求和,比如:

$arr = array('1','2','3');$sum = 0;//使用 foreach迴圈計算foreach($arr as $v){ $sum += $v;}//使用array_reduce()迭代求和echo array_reduce($arr , function($result , $v){ Return $result+$v;});

② 再比如,從資料庫中查詢出一組資料,接下來想得到他們的 id 值,拼接成類似 (1,2,3,4,5)字串,然後再”SELECT * WHERE id in (1,2,3,4,5)”處理,這時候完全可以 foreach() 陣列處理,其實也可以使用 array_reduce(),因為 array_reduce()就是“迭代地將陣列簡化為單一的值”,如下:

$arr = array( array('id' => 1, 'name' => 'a'), array('id' => 2, 'name' => 'b'), array('id' => 3, 'name' => 'c'));echo array_reduce($arr, function($result, $v) { return empty($result) ? $v['id']: $result . ',' . $v['id'];});

當然也可以使用implode(',',array_column($arr,'id'));實現

2)array_map(callback $callback , $arr) 返回使用者自定義函式作用後的陣列。回撥函式接受的引數數目應該和傳遞給 array_map() 函式的陣列數目一致。

向array_map傳入陣列,出來的還是陣列,而不是上面array_reduce()的一個值。所以,array_map()最簡單的就是把 callback函式作用到每個陣列的值上,最常見的場景就是 intval()、trim() 陣列中的值,在一些框架的原始碼中也經常見到,比如:

$arr = array('2', '3', '4', '5');array_map('intval', $arr);//在拼接sql查詢的時候,很有用array_map('htmlspecialchars', $arr);