我們經(jīng)常會對數(shù)據(jù)庫中查詢的數(shù)據(jù)進(jìn)行一些列處理之后再返回這個數(shù)據(jù),而經(jīng)常用到的就是對數(shù)組處理之后再返回給前臺,在laravel中我們經(jīng)常用到這些:
//假設(shè)有個數(shù)組$array,我們需要對數(shù)組中的每一項的屬性name進(jìn)行截取之后再返回。
$arrays = array_map(function($array){
$array->name = mb_substr($array->name,-2);
return $array;
}, $arrays);
//可以看出,首先把數(shù)組循環(huán)出來的每一項$array傳遞給了array_map()函數(shù);
//然后,我把數(shù)組每一項的name進(jìn)行了截取并賦值給了$array->name;
//array_map()函數(shù)處理完之后形成了一個新的數(shù)組,我把這個數(shù)組賦值給了原來的數(shù)組;
在上面這個代碼片段中,有亮點需要注意的地方:
1.array_map() 函數(shù)將用戶自定義函數(shù)作用到數(shù)組中的每個值上,并返回用戶自定義函數(shù)作用后的帶有新值的數(shù)組。
回調(diào)函數(shù)接受的參數(shù)數(shù)目應(yīng)該和傳遞給 array_map() 函數(shù)的數(shù)組數(shù)目一致。
提示:您可以向函數(shù)輸入一個或者多個數(shù)組
語法:array_map(myfunction,array1,array2,array3...)
2.php用substr截取中文時經(jīng)常會出現(xiàn)亂碼,因為utf-8下漢字是3字節(jié)的,如果截取長度正好是3的倍數(shù)應(yīng)該不會出現(xiàn)亂碼,可是如果你要截取的字符串中有空格,或者其他字符(比如 “ ”),也會出現(xiàn)亂碼。
當(dāng)然,php會給出官方的解決辦法。mb_substr 和 mb_strcut,需要在php.ini中打開php_mbstring.dll.
<?php
echo mb_substr("這里沒有亂碼!",0,3,"utf-8");
//視為字符流
?>
<?php
echo mb_strcut("這里沒有亂碼!",0,3,"utf-8");
//視為字節(jié)流,utf-8下一個漢字三個字節(jié)
?>