目录[1]变量 变量定义 变量赋值 [2]数据类型 字符串 整数 浮点数 布尔型 数组 对象 NULL 资源 [3]作用域 global static
变量变量定义变量是存储信息的容器,以$符号开头,其后是变量名称。变量名称必须以字母或下划线开头,对大小写敏感
<?php$x=5;//5echo$x;//什么都不输出echo$X;?>
变量赋值PHP没有创建变量的命令,变量会在首次为其赋值时被创建
<?php$txt="Hello world!";$x=5;$y=10.5;?>
数据类型PHP是一门类型松散的语言,不必告知PHP变量的数据类型,PHP会根据它的值,自动把变量转换成正确的数据类型。PHP数据类型包括8种:其中包括四种标量类型、两种复合类型和两种特殊类型。具体是:字符串、整数、浮点数、布尔、数组、对象、NULL、资源
[注意]var_dump() 会返回变量的数据类型和值
字符串字符串可以是引号内的任何文本,引号可以是单引号或双引号
<?php$x= "Hello world!";//Hello world!echo$x;echo"<br>";$x= 'Hello world!';//Hello world!echo$x;?>
<情况1>当字符串中包含引号,有三种解决方案:
[1]单引号中嵌入双引号
[2]双引号中嵌入单引号
[3]使用转义符"\"
<?php$str_string1= '"test"';$str_string2= "'test'";$str_string3= '\'test\'';echo$str_string1;echo"<br />";echo$str_string2;echo"<br />";echo$str_string3;?>
<情况2>当字符串的引号遇到变量,分为两种情况:
[1]当双引号中包含变量时,变量会与双引号中的内容连接在一起
[2]当单引号中包含变量时,变量会被当作字符串输出
<?php$test= 1;$str_string1= ' $test ';$str_string2= "$test";$str_string3= ' "$test" ';$str_string4= " '$test' ";echo$str_string1;//$testecho"<br />";echo$str_string2;//1echo"<br />";echo$str_string3;//"$test"echo"<br />";echo$str_string4;//'1'?>
<情况3>当字符串很长时,使用Heredoc结构形式的方法,首先定界符表示字符串(<<<),接着在(<<<)之后提供一个标识符(任意名称),换行后是字符串,最后以这个标识符结束字符串。注意标识符左右不要有多余的空格
<?php$str= <<<G123G;echo$str;//123?>
整数PHP整数必须至少有一个数字,不能包含逗号或空格,不能有小数点,正负均可,可以用三种格式规定整数:十进制、十六进制(前缀是0x)或八进制(前缀是0)
<?php$x= 5985;//int(5985)var_dump($x);echo"<br>";$x= -345;//int(-345)var_dump($x);echo"<br>";$x= 0x11;//int(17)var_dump($x);echo"<br>";$x= 011;//int(9)var_dump($x);?>
浮点数PHP浮点数是有小数点或指数形式的数字
<?php$x= 10.365;//float(10.365)var_dump($x);echo"<br>";$x= 2.4e3;//float(2400)var_dump($x);echo"<br>";$x= 8E-1;//float(0.8)var_dump($x);?>
布尔型PHP布尔型只有两个值:true或false(不区分大小写),常用于条件测试。当用echo指令输出布尔类型时,如果是true,则输出"1",false则什么都不输出
<?php$man= "男";$flag=$man== "男";//输出1echo$flag;echo"<br />";$flag=$man== "女";//什么都不输出echo$flag;var_dump($flag);//bool(false)?>
数组PHP数组可以在一个变量中存储多个值
<?php$cars=array("Volvo","BMW","SAAB");//array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(4) "SAAB" }var_dump($cars);?>
对象PHP对象是存储数据和有关如何处理数据的信息的数据类型。在PHP中,必须明确地声明对象,但首先必须声明对象的类。对此,使用class关键词,类是包含属性和方法的结构。然后在对象类中定义数据类型,然后在该类的实例中使用此数据类型
<?phpclassCar
{var$color;functionCar($color="green") {$this->color =$color;
}functionwhat_color() {return$this->color;
}
}functionPRint_vars($obj) {foreach(get_object_vars($obj)as$prop=>$val) {echo"\t$prop=$val\n";
}
}$herbie=newCar("white");echo"\herbie: Properties\n";
print_vars($herbie);?>
NULLPHP中的NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL
<?phperror_reporting(0);//禁止显示PHP警告提示$var;var_dump($var);//NULL$var1=null;var_dump($var1);//NULL$var2=NULL;var_dump($var2);//NULL$var3= "节日快乐!";unset($var3);var_dump($var3);//NULL?>
资源PHP资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。可以对资源进行操作(创建、使用和释放)。任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽
<?php$file=fopen("data/webroot/resource/f.txt","r");//打开文件$con=MySQL_connect("127.0.0.1","root","root");//连接数据库if($file_handle){//接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字while(!feof($file_handle)) {//判断是否到最后一行$line=fgets($file_handle);//读取一行文本echo$line;//输出一行文本echo"<br />";//换行}
}fclose($file_handle);//关闭文件?>
[注意]memory_get_usage() 会获取当前PHP消耗的内存,单位为byte
<?phpecho$m1=memory_get_usage();echo"<br />";$var_string= '123';//320echo$m2= memory_get_usage()-$m1;echo"<br />";$n= 123;//272echo$m3= memory_get_usage()-$m1-$m2;echo"<br />";$f= 123.00;//272echo$m4= memory_get_usage()-$m1-$m2-$m3;echo"<br />";$var_array=array('123');//576echo$m5= memory_get_usage()-$m1-$m2-$m3-$m4;?>
<?php$string= "就是就是";var_dump($string);//string(12) "就是就是"echo"<br />";$string= 9494;var_dump($string);//int(9494)echo"<br />";?>
作用域PHP有三种不同的变量作用域:local(局部)、global(全局)、static(静态)
函数之外声明的变量有global作用域,只能在函数以外进行访问;函数内部声明的变量有local作用域,只能在函数内部进行访问
<?phperror_reporting(0);//禁止显示PHP警告提示$x=5;//全局作用域functionmyTest() {$y=10;//局部作用域echo"<p>测试函数内部的变量:</p>";echo"变量 x 是:$x<br>";echo"变量 y 是:$y";
}//无输出
//10myTest();echo"<p>测试函数之外的变量:</p>";echo"变量 x 是:$x<br>";//5echo"变量 y 是:$y";//无输出?>
global关键词用于访问函数内的全局变量
<?php$x=5;$y=10;functionmyTest() {global$x,$y;$y=$x+$y;
}
myTest();echo$y;//输出 15?>
PHP同时在名为GLOBALS[index]的数组中存储了所有的全局变量,下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量
<?php$x=5;$y=10;functionmyTest() {$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();echo$y;//输出 15?>
static关键词通常,当函数完成或执行后,会删除所有变量,不过,有时需要不删除某个局部变量。要完成这一点,需要在首次声明变量时使用static关键词。每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息,但要注意的是,这个变量仍然是函数的局部变量
<?phpfunctionmyTest() {static$x=0;echo$x;$x++;
}
myTest();//0echo"<br>";
myTest();//1echo"<br>";
myTest();//2echo"<br>";
myTest();//3echo"<br>";
myTest();//4?>