关于PHP语法的笔记
因为一系列原因我又开始学php了……
习惯了erlang的一些特性,看书产生了想要流泪的冲动。
比如,php不但支持修改赋值,还有引用赋值。
$a="1"; $b = & $a;
$a="2";
此时b的值也会变成2。
比如,php支持静态变量的初始化static只对首次生效。
再比如,可变变量的使用。
$a="b";$b="111";
输出$a的内容是b,$$a的内容是$b 也就是111
还有,带着字母的的数字字符串组合,居然可以和整型数字直接运算(1.1abc+1=2.1abc)
也难怪以前老是有人高举php是最好的语言大旗……
--------------update----------------------------------------------------------------------
关于 ::与 ->的使用,还有self 和$this其实是包含关系
双冒号 引用类里面的静态方法或者属性,而且不需要实例化
self 在全局时使用,指的是窗口本身
this 指的是当前的函数本身
例:
class test {
static public $a;
const Abc = ‘1’;
public function b() {}
}
//建立一个子类继承父类
class tests extends test {
public function cs() {}
}
//调用父类的属性a时
test::$a;
//调用父类的常量Abc时
test::Abc;
//调用父类的方法b时
test::b();
//调用自身的方法cs时,有两种方法
$this->cs();
self::cs();
PHP中的 :: 和 ?: 的区别
举例:
$a ?? 0 等同于 isset($a) ? $a : 0
当$a被设置过,条件就成立,哪怕是被设为false,也算成立。
$a ?: 0 等同于 $a ? $a : 0
当$a的条件成立(不是false),返回$a,否则返回0
数组的重新组合:
$arr1= array(
['id'=>1,'task'=>1,value=>6],
['id'=>2,'task'=>1,value=>2],
['id'=>3,'task'=>2,value=>7]
);
$arr2 = [];
根据task分类生成新数组
foreach ($arr1 as $id => $v) {
$arr2[ $v['task'] ][] = $v; //根据task进行数组重新赋值
}