PHP 常用函数(数组/字符串/时间...)

数组合并

//array_merge 数组使用字符串键名,相同的键名会被后面的覆盖
//array_merge 数组使用数字键名,键名相同不会覆盖,且键名会重新索引
$arr1 = ['7'=>'c','5'=>'b','2'=>'d'];
$arr2 = ['2'=>'c','4'=>'d'];
$arr = array_merge($arr1,$arr2);
结果: Array ( [0] => c [1] => b [2] => d [3] => c [4] => d ) 

$arr1 = array('name'=>'zhan');
$arr2 = array('name'=>'terry');
$result = array_merge($arr1, $arr2);
结果:Array( [name] => terry )

//使用 “+” 运算符合并数组,可以保留数组的键值,如果合并的数组中含有相同的键值,后面的不会覆盖前面的键值(前面的优先)。
$arr1 = ['7'=>'c','5'=>'b','2'=>'d'];
$arr2 = ['2'=>'c','4'=>'d'];
$arr = $arr1+$arr2;
结果:Array ( [7] => c [5] => b [2] => d [4] => d ) 

字符串

//实体转html标签
$str = "<p>safd </p>";
$str = htmlspecialchars_decode($str); 
echo $str.'<br>';

//html标签转实体
$str = "<p>safd&nbsp;</p>";
$str= htmlspecialchars($str);
echo $str.'<br>';

//字符串长度
$str = "中国abc";
echo strlen($str); //9
echo "<br>";
echo mb_strlen($str);//5

隐藏手机号中间四位

$tel = '15139005760';

//1.字符串截取法
$new_tel1 = substr($tel, 0, 3).'****'.substr($tel, 7);
var_dump($new_tel1);
//2.替换字符串的子串
$new_tel2 = substr_replace($tel, '****', 3, 4);
var_dump($new_tel2);
//3.用正则
$new_tel3 = preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $tel);
var_dump($new_tel3);

获取时间戳

//获取上周的开始时间UNIX时间戳
$t=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
echo date("Y-m-d H:i:s",$t);

//获取上周结束时间UNIX时间戳
$t=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
echo date("Y-m-d H:i:s",$t);

//获取昨天开始时间
$t=mktime(0,0,0,date('m'),date('d'),date('Y'));

echo "今天:".date("Y-m-d")."<br>";       
echo "昨天:".date("Y-m-d",strtotime("-1 day")), "<br>";       
echo "明天:".date("Y-m-d",strtotime("+1 day")). "<br>";    
echo "一周后:".date("Y-m-d",strtotime("+1 week")). "<br>";       
echo "一周零两天四小时两秒后:".date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds")). "<br>";       
echo "下个星期四:".date("Y-m-d",strtotime("next Thursday")). "<br>";       
echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."<br>";       
echo "一个月前:".date("Y-m-d",strtotime("last month"))."<br>";       
echo "一个月后:".date("Y-m-d",strtotime("+1 month"))."<br>";       
echo "十年后:".date("Y-m-d",strtotime("+10 year"))."<br>";   

合并一个二维数组相同项,数量则相加

//.将usre_id看成唯一 合并一个二维数组相同项,数量则相加
$arr = array(
    array(
       'user_id' => 100,
       'goods_id' => 10,
       'number' => 1,
    ),
    array(
       'user_id' => 100,
       'goods_id' => 10,
       'number' => 2,
    ),
    array(
       'user_id' => 100,
       'goods_id' => 10,
       'number' => 2,
    ),
    array(
       'user_id' => 100,
       'goods_id' => 10,
       'number' => 2,
    ),
);
$item=array();
foreach($arr as $k=>$v){
    if(!isset($item[$v['user_id']])){
        $item[$v['user_id']]=$v;
    }else{
        $item[$v['user_id']]['number']+=$v['number'];
    }
}
print_r($item);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值