php 处理数组
Posted 大郎,起来喝药了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 处理数组相关的知识,希望对你有一定的参考价值。
一、计算经纬度
function getDistance($lng1, $lat1, $lng2, $lat2)
if (empty($lng1) || empty($lat1) || empty($lng2) || empty($lat2)) return '';
$radLat1 = deg2rad($lat1);//deg2rad()函数将角度转换为弧度
$radLat2 = deg2rad($lat2);
$radLng1 = deg2rad($lng1);
$radLng2 = deg2rad($lng2);
$a = $radLat1 - $radLat2;
$b = $radLng1 - $radLng2;
$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137;
if ($s < 1)
$s = intval($s * 1000);
$s .= 'm';
else
$s = intval($s * 10) / 10;
$s .= 'km';
return $s;
二、手机号隐藏中间四位
function hide_phone($str)
if (empty($str)) return '';
return substr_replace($str, '****', 3, 4);
三、超过一万变成w
function priceToW($price)
if ($price < 10000) return $price;
return number_format($price / 10000, 2) . 'w';
四、根据某个字段排序
/**
* 二维数组根据某个字段排序
* @param array $array 要排序的数组
* @param string $keys 要排序的键字段
* @param string $sort 排序类型 SORT_ASC SORT_DESC
* @return array 排序后的数组
*/
function arraySort($array, $keys, $sort = SORT_DESC)
$keysValue = [];
foreach ($array as $k => $v)
$keysValue[$k] = $v[$keys];
array_multisort($keysValue, $sort, $array);
return $array;
五、保留两位小数
function sprintfPrice($price)
if (empty($price)) return $price;
return str_replace('.00', '', sprintf("%.2f", $price));
六、二维转字符串
/**
* Undocumented function
* 二维转字符串
* @param [type] $arr
* @return void
*/
function arr2str ($arr)
foreach ($arr as $v)
$v = join(",",$v); //可以用implode将一维数组转换为用逗号连接的字符串
$temp[] = $v;
$t="";
foreach($temp as $v)
$t.=$v.",";
$t = substr($t,0,-1);
return $t;
二维转一维,其中的值当key
$list = [
0 => [
'id' => 1001,
'name' => '张三'
],
1 => [
'id' => 2091,
'name' => '李四'
]
];
现在需要将以上数据处理成为下列形式的一个一维数组:
$list = [
1001 => '张三',
2091 => '李四'
];
使用 php 内置函数一步到位:
array_combine(array_column($list, 'id'), array_column($list, 'name'));
数组分组
/**
* @description:根据数据
* @param dataArr:需要分组的数据;keyStr:分组依据
* @return: array
*/
protected function dataGroup(array $dataArr,$keyStr)
$newArr=[];
foreach ($dataArr as $k => $val) //数据根据日期分组
$newArr[$val[$keyStr]][] = $val;
return $newArr;
$list = array(
array(
'ctime'=>'2019-09-05 15:12:11',
'openid'=>'1',
),
array(
'ctime'=>'2012-09-05 15:12:11',
'openid'=>'2',
),
);
/** 1.根据时间分组*/
$list= $this->dataGroup($list,'ctime');
/** 2.根据openid分组*/
foreach($list as $k => $item)
$list[$k]= $this->dataGroup($item,'openid');
/**
json $list
2019-09-05 15:12:11:
1:
'ctime':'2019-09-05 15:12:11',
'openid':'1',
,
2012-09-05 15:12:11:
2:
'ctime':'2012-09-05 15:12:11',
'openid':'2',
**/
以上是关于php 处理数组的主要内容,如果未能解决你的问题,请参考以下文章