1、数组合并
数组合并一般使用array_merage,但是当合并两个键是数字的数组时,数组的数字索引将会被重置,有时候会引起不便。想要保留数字键值,使用+合并数组
$arr1 = ['13'=>'1166','14'=>'1889'];
$arr2 = ['1'=>'1236','5'=>'1891'];
$arr = $arr1+$arr2;
2、二维数组排序
$arr = [
['name'=>'张三','age'=>'15','h'=>'120'],
['name'=>'李四','age'=>'11','h'=>'121'],
['name'=>'王五','age'=>'4','h'=>'122'],
['name'=>'赵六','age'=>'11','h'=>'123'],
];
$sort_arr1 = array_column($arr,'age');
$sort_arr2 = array_column($arr,'h');
//按age顺序排序
array_multisort($sort_arr1,SORT_ASC,$arr);
//先按age顺序排序,age相同的再按h倒叙排序
array_multisort($sort_arr1,SORT_ASC,$sort_arr2,SORT_DESC,$arr);
3、 在类外部修改类的私有属性
class aa{
private $bb = 'fkkyy';
public function __get($name){
return $this->bb;
}
}
$class = new aa();
echo $class->cc;
在这个类中,我们通过get把bb的值赋给了cc,输出了:fkkyy。这个时候我们想要把bb的值修改一下,在原来有代码中,我们只能直接在类中修改。
想在类外修改的话,我们需要用到 Closure::bind(),把类的作用域绑定到一个匿名函数上,然后再匿名函数内修改bb的值即可
class aa{
private $bb = 'fkkyy';
public function __get($name){
return $this->bb;
}
}
$class = new aa();
$func = \Closure::bind(function(){$this->bb='fuck you';}, $class,'aa');
$func();
echo $class->cc;
成功输出:fuck you
4、 get_class 和 get_called_class的区别
get_class :获取定义当前方法的类名
get_called_class:获取正在调用当前方法的类名
5、assert断言和if判断的区别
assert(1==2);断言失败后直接报错
if(1 == 2){};判断不符合,不影响后续代码执行
6、获得指定月份的开始和结束时间戳
$time = '2018-05';
$timebegin = strtotime($time) ; //开始时间戳
$day = date('t',$timebegin);
$timeend = $timebegin + 86400 * $day - 1; //结束时间戳