1 <!DOCTYPE html> 2 <html> 3 <?php 4 // 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建 5 $a = 10; 6 $b = "string"; 7 $c = true; 8 echo $a; 9 echo $b; 10 echo $c; 11 echo "<br/>"; 12 13 // 2.var_dump函数用来查看表达式的类型和值 14 var_dump($a); 15 var_dump($b); 16 var_dump($c); 17 echo "<br/>"; 18 19 // 3. 用empty()函数检测一个变量是否为空,isset()检测一个变量是否设置,unset()释放一个变量 20 $var = \'\'; 21 var_dump(empty($var)); 22 var_dump(isset($var)); 23 $var = \'abc \'; 24 echo $var; 25 var_dump(isset($var)); 26 unset($var); 27 var_dump(isset($var)); 28 echo "<br/>"; 29 30 // 4.php中变量名区分大小写,但内置关键字及自定义函数和类名不区分大小写 31 $var = "smallvar"; 32 $VAR = "BIGVAR"; 33 ECHO $VAR; 34 echo $var; 35 echo "<br/>"; 36 37 // 5.可变变量,一个变量的变量名可以动态设置 38 $hi = "hello"; 39 $$hi = "world"; 40 echo "$hello ${$hi}"; 41 echo "<br/>"; 42 43 // 6.引用赋值,和C++中引用类似,但php中只是关联值,内存上不同体,使用unset仅仅是取消关联,不会释放所有值 44 $foo = 25; 45 $foo1 = &$foo; 46 echo $foo; 47 echo $foo1; 48 unset($foo1); 49 echo $foo; 50 echo "<br/>"; 51 52 // 7.PHP数据类型 53 /* 基础类型四种 54 * bool型:和C++中差不多,0,空白字符串和"0"以及NULL为FALSE,其他为TRUE 55 * 整型:前加0是八进制,加0x是十六进制,大于2147483647会被解释为浮点型 56 * 浮点型:范围在1.7E-38~1.7E+38之间,精确到小数点后15位 57 * 字符串:字符和字符串都统一当做字符串处理,字符串的三种定义方式如下(单引号,双引号,<<<标识符) 58 * */ 59 echo \'\n\r$foo\\\\'\'; //除了对\'和\要使用转义外,其它转义和变量名都是无效的 60 echo "\n\r$foo\\\\'"; //转义都是有效的,可以使用{$foo}将变量分离解析 61 62 $str =<<<EOE 63 <br/>//使用<<<来包括字符串,在<<<之后提供一个标识符表示开始,最后提供一个相同的结束符表示结束, 64 注意标识符必须要从第一列开始,且除了结束符后的分号外,不能再加任何字符。 65 EOE; 66 echo $str; 67 echo "<br/>"; 68 69 /* 两种扩展类型,这里简要介绍,后面的章节详述 70 * 数组:实际上是关联数组,可以用多种方法构造,这里使用array语言构造一个数组 71 * 对象:用class定义,new实例化,->引用成员变量及函数 72 * */ 73 $arr = array("foo"=>"bar", 12=>true); 74 echo $arr["foo"]; 75 echo $arr[12]; 76 echo "<br/>"; 77 78 class Person{ 79 var $name; 80 function say(){ 81 echo "Person say my name is $this->name"; 82 } 83 } 84 $p = new Person; 85 $p->name = "TOM"; 86 $p->say(); 87 echo "<br/>"; 88 89 /* 两种特殊类型 90 * 资源:保存到外部资源的一个引用,比如文件、数据库、图形画布等 91 * NULL类型:表示变量为空,直接赋值为NULL、unset后的变量、未声明变量都为NULL 92 */ 93 $file_handle = fopen("01.php", "r"); 94 $img_handle = imagecreate(100, 50); 95 var_dump($file_handle); 96 var_dump($img_handle); 97 echo "<br/>"; 98 99 // 8.类型转换,分为自动类型转换和强制类型转换 100 /* 自动类型转换的规则: 101 * 有bool型参与运算时,TRUE转化为1,FALSE转化为0 102 * NULL转化为0 103 * integer和float一起运算时,将integer转化为float 104 * 有字符串和数字型一起运算时,将字符串转化为数字 105 */ 106 $a = "100page" + 1.5; //自动类型转换种将字符串转化为数字的例子 107 echo $a; //输出101.5 108 echo "<br/>"; 109 /* 强制类型转换有三种方法,如下所示 110 * 前两种不会改变原变量的类型,只是赋值到新的变量中 111 * 最后一种方法会改变原变量的类型 112 */ 113 $foo = (boolean) 10; //和C++相同,在变量前加(变量类型) 114 var_dump($foo); 115 $foo = intval(123.45); //使用intval()、floatval()、strval()进行变量转换 116 var_dump($foo); 117 settype($foo, "string");//使用settype(var, type); 118 var_dump($foo); 119 echo "<br/>"; 120 121 // 9.变量类型的测试函数,用gettype()获得函数类型或者is_type()判断是否是某种type 122 $a = 12; 123 $b = 12.5; 124 echo gettype($a); 125 echo gettype($b); 126 var_dump(is_int($a)); 127 var_dump(is_float($a)); 128 echo "<br/>"; 129 130 // 10.常量,用户可以用define自定义变量,用defined函数检测是否定义 131 define("CON_INT", 100); //常量一旦被定义就不能改变,并且可以在任何地方定义和访问 132 define("not_big", "hello", true); //传入true表示不区分大小写,否则区分 133 echo CON_INT; //使用常量不需要使用$符号 134 var_dump(defined(\'CON_INT\')); 135 var_dump(defined(\'con_int\')); 136 var_dump(defined("NOT_BIG")); 137 echo "<br/>"; 138 139 // 11.魔术常量,随着位置的改变而改变,名字都是_NAME_,共8个 140 /* __FILE__ 当前文件名; __LINE__ 当前函数名 141 * __CLASS__ 当前类名; __METHOD__ 当前对象方法名; 142 * __FUNCTION__ 当前函数名; __NAMESPACE__ 当前命名空间名; 143 * __DIR__ 当前目录名; __TRAIT__ Trait 的名字; 144 */ 145 echo "当前行: ".__LINE__."<br/>"; 146 echo "当前文件:".__FILE__."<br/>"; 147 echo "当前目录:".__DIR__."<br/>"; 148 149 // 12.运算符 150 /* 常用运算符和C++中一样,主要有以下几个运算符不太一样 151 * . 连接运算符号,用于连接字符串,衍生出 .=操作符 152 * == 左边操作数灯油右边操作数时返回true(这个操作符时将两个数转成同一类型后比较的) 153 * === 左边操作数等于右边操作数,并且类型也相同时返回true 154 * <>或!= 当左边操作数不等于右边操作数时返回true,否则返回false 155 * !== 当左边操作数不等于右边操作数,或者它们类型不相同时返回true,否则返回false 156 * `` 反引号,将其中内容作为外壳命令执行,并将其执行信息返回 157 * @ 错误控制运算符,忽视表达式可能产生的错误信息 158 * => 数组下标指定符,指定数组的键与值 159 * instanceof 类型运算符,测定一个对象是否来自指定的对象类 160 */ 161 $a = 0; 162 var_dump($a == "0"); //相等 163 var_dump($a === "0"); //不相等,类型不一样 164 echo "<pre>".`dir`."</pre>"; //执行windows的dir命令并输出 165 @$a = $a / 0; //如果不加@PHP会报错 166 167 // 13.语言流程控制结构 ,与C++基本一样,只在break和continue处有所不同 168 // 用break n语言表示直接跳出n层循环,continue n类似 169 for($i = 0; ; $i++) { 170 for ($j = 0; $j < 5; $j++){ 171 if ($j > $i) break; 172 if ($i == 5) break 2; //直接跳出两层循环 173 echo $j; 174 } 175 } 176 ?> 177 <br/> 178 </html>
执行结果
10string1 int(10) string(6) "string" bool(true) bool(true) bool(true) abc bool(true) bool(false) BIGVARsmallvar world world 252525 \n\r$foo\\' 25\\\' //使用<<<来包括字符串,在<<<之后提供一个标识符表示开始,最后提供一个相同的结束符表示结束, 注意标识符必须要从第一列开始,且除了结束符后的分号外,不能再加任何字符。 bar1 Person say my name is TOM resource(3) of type (stream) resource(4) of type (gd) 101.5 bool(true) int(123) string(3) "123" integerdoublebool(true) bool(false) 100bool(true) bool(false) bool(true) 当前行: 145 当前文件:E:\SWM\XAMPP\htdocs\02base\01.php 当前目录:E:\SWM\XAMPP\htdocs\02base bool(true) bool(false) 驱动器 E 中的卷是 其他 卷的序列号是 20F1-902E E:\SWM\XAMPP\htdocs\02base 的目录 2013/07/30 18:12 . 2013/07/30 18:12 .. 2013/07/19 17:03 174 .buildpath 2013/07/19 17:03 516 .project 2013/07/29 20:28 .settings 2013/07/21 16:17 5,638 01.php 2013/07/22 16:59 2,232 02.php 2013/07/23 15:25 2,885 03.php 2013/07/29 23:40 10,360 04.php 2013/07/30 21:36 4,925 05.php 2013/07/30 23:04 06 7 个文件 26,730 字节 4 个目录 198,289,969,152 可用字节 001012012301234