PHP常用函数总结


一、数组函数

(1)array_group_by

该函数需要自己添加到项目中

/**
 * [array_group_by 数组分组]
 * @param  [type] $arr [二维数组]
 * @param  [type] $key [键名]
 * @return [type]      [新的二维数组]
 */
function array_group_by($arr, $key){
    $grouped = array();
    foreach ($arr as $value) {
        $grouped[$value[$key]][] = $value;
    }
    if (func_num_args() > 2) {
        $args = func_get_args();
        foreach ($grouped as $key => $value) {
            $parms = array_merge($value, array_slice($args, 2, func_num_args()));
            $grouped[$key] = call_user_func_array('array_group_by', $parms);
        }
    }
    return $grouped;
}
$list = array_group_by($list,'parent_id'); //根据父级ID分组
$list1 = $list[1]; //直接获取到父级ID为1的数据

$list1 = array_group_by($list,'id')[1][0];

(2)array_column

$typelist = []; //获取数据库中的全部数据
$types = array_column($typelist,'name','id'); //把数据做成键值对
$name1 = $types[1]; //获取到id=1的记录对应的name值
$typelist = []; //获取数据库中的全部数据
$types = array_column($typelist,'name'); //把数据做成数组

(3)array_multisort

array_multisort(
    array_column($list,'age'),SORT_DESC,
    array_column($list,'number'),SORT_DESC,
    array_column($list,'id'),SORT_ASC,
    $list
);

(4)array_chunk

$list = []; //获取数据库中的全部数据
$limit = 100;
$page = 2; //查询数据的页码
$lists = array_chunk($list,$limit); //根据每100条分组
$pagelist = $lists[$page - 1] ?? []; //查询对应页码的数据
return $pagelist;

(5)array_splice

$list = []; //获取数据库中的全部数据
$list = array_splice($list,0,5); //取前面5条
$a = ["red","green","blue","yellow","brown"];
$b = array_slice($a,2);
$b = ["blue","yellow","brown"];

(6)array_sum

$list = []; //获取数据库中的全部数据
$total = array_sum(array_column($list,'money')); // 汇总列表的money

(7)array_key_exists

$typelist = []; //获取数据库中的全部数据
$types = array_column($typelist,'name','phone'); //把数据做成键值对
$phone = "13000001111";
if(array_key_exists($phone,$types)){
    echo "查到手机号的姓名为:".$types[$phone];
}

二、字符串函数

(1)拆分数组

$str = "100,101,102,103,104,105,106";
$nums = explode(',',$str);
//$nums[0] == 100;

$nums = [100,101,102,103,104,105,106];
$str = implode(',',$nums);
// $str = "100,101,102,103,104,105,106";

(2)截取字符串

$string = "0123456789";
$str0 = substr($string,0,3);
// $str0 = "012";

(3)包含字符串

$string = "0123456789";
if(strstr($string,"789")){
    echo "true";
}

(4)替换字符串

$string = str_replace('php','java',$string); //把$string中的php换成java

(5)html标签替换

$text = html_entity_decode($html); //解析 等html标签

三、JSON函数

(1)json和字符串转换

$list = []; //从数据库中查询
$string = json_encode($list,JSON_UNESCAPED_UNICODE); //数组转为json字符串(中文不乱码)
$list = json_decode($string,true); //json字符串转为数组

四、IP地址函数

(1)IPv4与数字转换

ip2long("127.0.0.1");       //2130706433
ip2long("255.255.255.255"); //4294967295
long2ip(1);                 //0.0.0.1

(2)IPv6与数字转换

$ip = '2409:8a6a:822f:a40:3060:3060:3060:3060';
$nip = inet_pton($ip);
bin2hex($nip); //24098a6a822f0a403060306030603060