PHP标记风格:
xml风格: <?php ... ?>
脚本风格: <script language="php"> ... </script>
简短风格: <? ... ?> 需在php.ini中设置
ASP风格: <% ... %> 需在php.ini中设置
PHP注释:
C++风格单行注释(//)
C风格多行注释(/* ... */)
Shell风格(#)
单行注释中不要出现“?>”标志
PHP数据类型:
一共支持8种原始类型,4种标量类型:boolean(布尔)、integer(整形)、float/double(浮点型)和string(字符串型);2种符合类型:array(数组)和object(对象);2种特殊类型:resource(资源)与null。
boolean:在php中符合c中其他类型和boolean型之间的转换:0、0.0、"0"、空白字符串("")、只声明没赋值的数组等可转换为false。
string:3种定义方式,单引号(')、双引号(")和界定符(<<<)。双引号中包含的变量会自动替换成实际数值
使用单引号只需对单引号转义即可,使用双引号要对双引号和“$”转义
界定符(<<<)从php4.0开始支持。
//结束标识符必须单独另起一行,并且不允许有空格,在标识符前后不有其他符号或字符
echo $string = <<< str
这是要输出的字符串;
这是要输出的字符串;
这是要输出的字符串;
str;
integer:在32位操作系统中有效数值范围 -2147483648~+2147483647,可以用十进制、八进制(0)、十六进制(0x)表示,八进制出现非法数字,后面的会被忽略,十六进制出现非法字符直接出错
float:32位系统中有效范围是1.7E-308~1.7E+308, 标准格式和科学计数法两种表示方式。php4.0之前为double, 二者无差别
array:一组类型相同的变量的集合,每个元素有键值对组成
$array0 = ["value0","value1","value2"];
$array1[1] = 'value1';
$array1['lyc'] = 'value2';
$array1[2.5] = 'value3'; // key值会进行相应转换
$array1['234'] = 'value3';
$array2 = [
"lyc" => "value1",
0 => "value2",
2 => "value3"
];
$array3 = ['haha',4 => 'aaa', 6.8 => 'ddd','dfdffd','rrrrr'];
在一些版本中,可以这样写:
$array0 = ('value1','value2'...);
或者
$array[key] = 'value';
或者
$array = array(key1 => value1, key2 = value2...);
关于key的转换问题,以后再说
object:参考 PHP笔记--面向对象
resource://TODO
null: 不区分大小写,被赋予空值的情况有一下3种:还没有附任何值、被赋值null、被unset()函数处理过的变量
is_null()用来判断变量是否为null,为null返回true。unset()用来销毁指定的变量,从php4开始unset不再有返回值
PHP数据类型转换:
(type):type除null和resource外都可以,不会改变原变量
或者bool settype(mixed var, string type):type除resource外都可以,会改变原变量
$int = 12345;
echo (bool)$int; // 1 (boolean)
echo $int; // 12345
settype($int, 'boolean');
echo $int; // 1 (boolean)
PHP数据类型检测:
PHP常量:
声明语法格式:define(string constant_name, mixed value, case_sensitive=true)
constant_name: 必选,常量名称
value: 必选,常量值
case_sensitive: 可选,指定大小写是否敏感,true为不敏感
获取常量值: 一、直接由常量名获取,二、mixed constant(string const_name); const_name可为常量名称或者存储常量名的变量
判断常量是否定义:bool defined(string const_name);
预定义常量:
PHP变量:
用$和标识符表示,区分大小写
变量赋值:直接赋值(按值传递)和引用赋值(按址传递),类的直接赋值也是引用方式,和java类似
变量作用域:
局部变量:函数内定义的,函数结束即清除
全局变量:定义在函数外,作用域是整个php文件,在用户自定义函数内不可用(使用global声明全局变量可以用),
静态变量:函数结束后仍保留,再次进入仍可使用,使用static声明
$lycLyc = 0;
$lycGlobal = 0;
function lyc(){
static $lycStatic = 0; //第一次进入函数执行,以后不再执行
++$lycStatic; //每次进入函数都会执行
$lycLyc = 0; // 和上面的不是同一个
global $lycGlobal; // 函数外的
};
可变变量:
允许动态改变一个变量的名称,工作原理是该变量的名称又另一个变量的值来决定,多加一个 $
将 $ 理解长c语言中的 * 的话,有点类似指针的意思
$lyc0 = 'LYC0';
$lyc1 = 'LYC1';
$lyc = 'lyc0';
echo $$lyc; // LYC0
$lyc = 'lyc1';
echo $$lyc; // LYC1
预定义变量:
运算符:
%求余,被除数为负,结果也为负
字符串云算符:只有一个 . 。 用于连接字符串,+只能用于算数运算,在字符串使用+,会将字符串转换成整型再相加
位运算符:and、or相当于 &&、||,只是优先级不同。xor(异或)
比较运算符:===(恒等)、!==(不恒等),会比较值和类型
错误控制运算符:对出现错误的表达式隐藏,只是隐藏不显示,错误依然存在,在表达式前加上@即可
$err = @(5/0);
其它未介绍的运算符基本和java中一样
各个运算符的表示和优先级://TODO
函数:
function fun_name($str1,$str2...){
......
}
参数传递:按值传递、按址传递、默认参数三种,默认参数必须放在最后,从php5开始,默认值也可以通过引用传递
函数返回值:return 或者 return();
变量函数:用一个变量值代替函数名
$func = 'come';
$func()就等效于come();
对函数的引用:
对函数的引用,就是对函数返回结果的引用。注意“&”的使用
function &example($tmp=0){ // 定义一个函数,加"&"
return $tmp;
}
$str = &example('看到了');//声明一个函数引用$str,也要有&
echo $str; // 看到了
取消引用:unset(); 只是断开变量名(引用的变量名)和变量内容之间的绑定,不会销毁变量内容
PHP编码规范://TODU
流程控制语句:
条件控制不再介绍,
基本循环控制不再介绍,
foreach:在php4中用来遍历数组,在php5中也可用来遍历对象
foreach(array_expression as $value)
statement;
或
foreach(array_expression as $key=>$value)
statement;
如果遍历的数据类型不对,会出现错误,使用is_array()函数判断变量是否是数组类型
$str = [1=>'lyc',2=>'LYC','ii'=>'II'];
foreach ($str as $value)
echo $value.'<br/>';
foreach ($str as $key=>$value)
echo $key.'=>'.$value.'<br/>';
class Lyc{
public $name = 'lyc';
public $age = 0;
}
$ss = new Lyc();
foreach ($ss as $key=>$value){
echo $key.'=>'.$value.'<br/>';
}
流程控制的另一种写法:
对于if、while、for、foreach、switch语句,可以使用 : 代替 { 。使用endif;、endwhile;、endfor;、endforeach;和endswitch;代替 } 。
break、contonue; 除一般用法外,也可在后面跟一整数,用来指定一次跳出几层循环,特别注意continue后面跟整数的效果。
continue;和continue 1;效果是一样的。对于continue $num;里面的$num-1层会直接跳出,最外一层(里面数第$num层)是跳出当前次循环。