php是一种服务器脚本语言,专为web而设计。
可以在html页面中嵌入php语言,这样每次在访问页面是,将在服务端将php进行解释并生成html页面或者其他输出(所以浏览器并不需要理解php),这就是服务器脚本语言的原理。
php最初是Personnel Home Page的缩写,经过不断修改完善,现在是超文本预处理程序的缩写,Hypertext Processor。
php官网: www.php.net Zend Technolygies 公司: www.zend.com
php中常见的错误:
变量名前边不加$符号
语句后边没有加上分号
判断是否相等使用=,应该使用==
判断是否有值使用 if($a),这样是不行的,如果$a有值,但是值是0,那么就会返回false; 应该是使用 isset($a).
不过使用empty()判断也是不行的。参见php常见错误文章。
1.php标记分为四种:
用php标记来区分php代码和html代码。
xml风格: 标准风格,同时也可以在xml文档中使用。
<?php echo "hello"; ?>
简短风格: 必须启用配置文件中short_open_tag项,或者启用短标记选项编译php。多数已不支持,建议勿用。
<? echo "hello"; ?>
script风格:如果html编辑器不支持其他,就可以使用这种。
<script language='php'> echo "hello"; </script>
asp风格:配置中启用asp_tag选项,默认禁用,不建议使用。
<% echo "hello"; %>
2.php注释分三种
C风格多行注释:多行注释无法嵌套,即注释中不能还有注释
/* comment
sdfgjskdj
*/
C++风格单行注释: 双斜杠 // comment
shell风格注释:井号 # comment
无论双斜杠还是井号的注释,在注释符号之后直到该行结束或者php结束标记前内容都是注释。
看下边例子,加深理解: //here is a comment ?> but here is not comment
3.访问表单变量-三种风格的表单变量
php变量名必须与表单中的name一样,自动就可以获取对应的值。
如果表单中一个input控件的name="myname"
简短风格: $name = $myname;
需要将register_global设置为on,默认off。php6可能会弃用这种方式,因为容易导致安全性问题。为什么会有安全性问题呢?就是不论你自己是否创建变量,php都会默认创建和表单中同名的这些变量,而且都是全局变量,可能有时你没注意到同名,导致你使用自己变量和php自动创建的变量区分不开。
中等风格: $name = $_POST["myname"];
推荐这种风格。
长风格: $name = $_HTTP_POST_VAR['myname'];
可以使用register_long_arrays来启用它,但是新版本已经弃用了这种方式,早晚会删除。
4.超级全局变量 数组 $_POST $_GET $_REQUEST
如果是post提交,数据保存在$_POST数组中---$_POST['myname'] ,如果是get提交,数据保存在$_GET数组中--$_GET[ 'myname' ]
但是两种情况都可以从数组$_REQUEST获取 -- $_REQUEST['myname'].
5.php的标识符
标识符可以由字母数字下划线组成,但是不能以数字开头;
变量标识符区分大小写,不同大小写代表不同变量,但是尽量不要这么用。 函数的大小写都一样,但是也要尽量统一编码风格。
变量名和函数名虽然可以同名,也允许,但这样不是一个好的习惯。
6.php数据类型
Integer 整数
Float 浮点数,也叫Double,双精度值
String 字符串
Boolean 布尔值,true或false
Array 数组
Object 对象
NULL 空 --------没有被赋值,赋值为null,或者被unset(重置)
RESOURCE 资源 --------- 特定的内存函数将会返回resource类型的变量,他们代表外部资源,例如数据库连接。
7. php是弱类型语言,可变类型语言(动态类型语言)。将会根据自己当前的值获得相应的类型。
类型转换 $a=0; $b=(float)$a; 那么此时$b的值是0.0, 而$a的值还是0. 这就是php的显式类型转换方法。括号内加上变量类型。
可变变量名: 貌似唯独php支持可变变量名,意思就是可以用其他变量的值作为这个变量的变量名称。
$a='hello'; $$a='world'; 结果也就是 $hello = 'world';
php常量 define( 'NAME', 'tiantian' ); 常量用来定义固定的不能改变的值。一旦设定,不能更改。 echo NAME;
查看预定义常量的方法phpinfo();
8. php变量作用域 P19
9. 引用操作符&
普通赋值: $a=2; $b=$a; 此时,把$a产生出一个副本,然后赋值给$b,之后再改变他们某个的值,另一个不受影响。那么引用赋值是什么样的呢?
引用赋值: $a=2; $b=&$a; $a=3; 那么此时$b的值也变成了3.
进行unset($a);操作,不会改变$b=3的状态,只是断开$a和7之间的内存中的连接。
10 比较操作
php中非0代表true,0代表false。
三个等号代表恒等于,只有操作符两遍的值相等并且类型也一样的时候才为true。
例如 : 0=='0' 为true,但是0==='0' 为false, 因为二者虽然值相等,但是类型不同,一个代表整数,一个代表字符串。
判断相等与否地方非常重要,一定要谨慎,非常容易出现问题。
11. 特殊符号
@ 错误抑制操作符,放在任何可能产生错误的表达式前边。
执行操作符,即返单引号(``),中间可以引用服务器端命令,比如 在windows上 :
$out= `dir c:` ; echo "<pre>" . $out . "</pre";
这样就可以执行服务端命令得到一个目录列表并把它输出到浏览器了。
类型操作符 instanceof
class myclass();
$a = new myclass(); if($a instanceof myclass){ echo "haha";} 判断$a属于myclass 这里将会输出haha。
数组操作符
+ | 联合 | $a+$b | 返回包含$a和$b的所有元素的数组 |
== | 等于 | $a==$b | 如果两个数组具有相同的键值对,返回true |
=== | 恒等于 | $a===$b | 如果两个数组键值对相同,并且顺序相同 |
!= | 不等 | 和<>是一样的 | |
!=== | 不恒等于 | ||
print和echo一样,但是print慢。
12 php可变函数
php函数string gettype(mixed var)可以返回一个变量的类型。 bool int double string array resource object 如果是非标准类型,那么就会返回unknown type
bool settype(mixed var, string type),则可以给一个变量设置类型。
测试函数:php中有很多测试类型的函数,is_string() 是否是字符串 is_array() 是否是数组 等等 好多个is_函数。分别对应具体的类型。
另外还有isset()函数(可以传入逗号隔开的多个参数) unset()函数 empty()函数 都非常有用和重要。
转换变量数据类型的函数 intval() floatval() strval() 等。将变量分别转换为对应的类型。
13.可替换控制结构的语法。
它由可替换前花括号的冒号和可替换后花括号的endif endswitch endfor endwhile endforeach等组成
例如: if($a>0) : echo "hhaha"; endif;
declare结构使用设置ticks=n来控制在代码块内每隔n行运行特定函数。