我们经常会对数据库中查询的数据进行一些列处理之后再返回这个数据,而经常用到的就是对数组处理之后再返回给前台,在laravel中我们经常用到这些:
//假设有个数组$array,我们需要对数组中的每一项的属性name进行截取之后再返回。
$arrays = array_map(function($array){
$array->name = mb_substr($array->name,-2);
return $array;
}, $arrays);
//可以看出,首先把数组循环出来的每一项$array传递给了array_map()函数;
//然后,我把数组每一项的name进行了截取并赋值给了$array->name;
//array_map()函数处理完之后形成了一个新的数组,我把这个数组赋值给了原来的数组;
在上面这个代码片段中,有亮点需要注意的地方:
1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
提示:您可以向函数输入一个或者多个数组
语法:array_map(myfunction,array1,array2,array3...)
2.php用substr截取中文时经常会出现乱码,因为utf-8下汉字是3字节的,如果截取长度正好是3的倍数应该不会出现乱码,可是如果你要截取的字符串中有空格,或者其他字符(比如 “ ”),也会出现乱码。
当然,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");
//视为字节流,utf-8下一个汉字三个字节
?>
网友评论