PHP学习笔记01——基础语法

  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 

 

posted @ 2013-07-21 17:17  Burn_E  阅读(228)  评论(0编辑  收藏  举报