PHP函数\方法记录

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; //结束时间戳

猜你喜欢

转载自blog.csdn.net/u012830303/article/details/85157415
今日推荐