1. PHP提供两种方式对变量进行赋值:传值赋值(复制值)和传地址赋值(引用)
$home="ss";
$home2=&$home; 传地址,改变home,或者home2都会是它们的值发生改变
<?php
function func(&$parm) {
$parm=1;
}
$a=0;
func($a);
echo $a; 输出1
?>
2. PHP的变量按照作用域的不同分为3种:本地变量、全局变量和静态变量。
(1)本地变量:
<?php
$a=1;
function func(){
echo "variable a in func:".$a."<br>";没有输出,$a为空,函数内部的变量,都被限制在局部函数范围内
}
func($a);
echo "variable a in func:".$a."<br>";
?>
(2)全局变量:以下两种方式 都可定义全局变量
<?php
$a=1;
function func(){
global $a;
//echo "variable a in func:".$a."<br>"; 在函数内部标示$a为全局变量
echo "variable a in func:".$GLOBALS["a"]."<br>";
}
func($a);
echo "variable a in func:".$a."<br>";
?>
(3)静态变量
<?php
function func(){
static $a=1;
echo "variable a in func:".$a."<br>";
$a++;
}
func();
func(); 第二次调用,$a没有被重新初始化
?>
3. 动态变量 动态变量的变量名是可变的,也就是通过两一个变量传递。
<?php
$var="ic";
$$var="This"; 用$var的值作为变量名,等价于 $ic="This"
echo $var."<br>"; 输出变量名
echo $$var."<br>"; $$var等价于$($var)等价于$(ic) 输出变量值
echo $ic; ic是由$var的值传递的,可以实现同样的变量调用
?>
4. require_once与include_once的区别
(1)机制不同,不管require语句是否被运行,都会将包含的文件代码包含进来。而include语句没有被执行,则包含文件的代码不会被包含进来。
(2)文件不存在时的错误处理方式不一样:如果被包含的文件找不到,require语句会抛出一个致命错误并中止脚本的运行,而include只会抛出警告信息。
5. PHP常用函数
(1)getdate 获取日期时间信息,返回数组。缺点,时间不够精确,只能精确到秒。
键名 | 说明 | 返回值例子 |
---|---|---|
"seconds" | 秒的数字表示 | 0 到 59 |
"minutes" | 分钟的数字表示 | 0 到 59 |
"hours" | 小时的数字表示 | 0 到 23 |
"mday" | 月份中第几天的数字表示 | 1 到 31 |
"wday" | 星期中第几天的数字表示 | 0(表示星期天)到 6(表示星期六) |
"mon" | 月份的数字表示 | 1 到 12 |
"year" | 4 位数字表示的完整年份 | 例如:1999 或 2003 |
"yday" | 一年中第几天的数字表示 | 0 到 365 |
"weekday" | 星期几的完整文本表示 | Sunday 到 Saturday |
"month" | 月份的完整文本表示 | January 到 December |
0 | 自从1970.01.01开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似。 | 系统相关,典型值为从 -2147483648 到 2147483647。 |
(2)gettimeofday 返回精确到微秒级的时间,所返回的数组键的含义是:
- "sec" - 自 Unix 纪元起的秒数
- "usec" - 微秒数
- "minuteswest" - 格林威治向西的分钟数
- "dsttime" - 夏令时修正的类型
(3)checkdate(month,day,year) 验证日期是否有效
(4)date 格式化本地时间
(5)输出控制函数flush:输出缓存区,应用于网页比较大或者网页的后台操作比较多的情况下,分阶段地输出缓存区可以使访问者耐心地等待页面的完成。
<?php
echo "Starting....<BR>";
for($i=0;$i<10000000;$i++){
if($i%100000==0){
echo "Processing ".$i."<BR>";
flush();
}
}
echo "All done."
?>
每循环十万次输出一行。如果删掉flush,所有的输出将在一千万次循环后同时输出。
(6) isset检测变量是否已经被赋值 unset销毁指定的变量
$var =1; 只有赋值为NULL时,才为False
var_dump(isset($var)); ar_dump -- 打印变量的相关信息,包括变量类型和变量的值
unset($var);
var_dump(isset($var));
6. PHP中特殊的构造方法
class Dog{
var $name;
function __construct(){ 特殊的构造函数
$this->name="Joe";
print "构造函数";
}
}
$dog=new Dog;
$dog2=new Dog(); 小括号可有可无
function __destruct(){ 析构函数
print "析构函数<br>";
}
7.父类调用子类的方法 parent::function();
8.静态类的调用 MainThread::send() 因为没有对象被创建,所以不能使用"->"
PHP中的静态类和非静态类并没有明确的界限。同样一个类,如果通过创建对象来调用,就可以看做是一个
非静态类。如果通过类名直接调用,可以看做是一个静态类。
9.克隆对象 $new_obj = clone $old_obj 如果类中包含 __clone函数,则会自动调用。
10. header("Location:Post.htm"); 重定向 的URL