<!DOCTYPE html>
<html>
<?php
// 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建
$a = 10;
$b = "string";
$c = true;
echo $a;
echo $b;
echo $c;
echo "<br/>"; // 2.var_dump函数用来查看表达式的类型和值
var_dump($a);
var_dump($b);
var_dump($c);
echo "<br/>"; // 3. 用empty()函数检测一个变量是否为空,isset()检测一个变量是否设置,unset()释放一个变量
$var = '';
var_dump(empty($var));
var_dump(isset($var));
$var = 'abc ';
echo $var;
var_dump(isset($var));
unset($var);
var_dump(isset($var));
echo "<br/>"; // 4.php中变量名区分大小写,但内置关键字及自定义函数和类名不区分大小写
$var = "smallvar";
$VAR = "BIGVAR";
ECHO $VAR;
echo $var;
echo "<br/>"; // 5.可变变量,一个变量的变量名可以动态设置
$hi = "hello";
$$hi = "world";
echo "$hello ${$hi}";
echo "<br/>"; // 6.引用赋值,和C++中引用类似,但php中只是关联值,内存上不同体,使用unset仅仅是取消关联,不会释放所有值
$foo = 25;
$foo1 = &$foo;
echo $foo;
echo $foo1;
unset($foo1);
echo $foo;
echo "<br/>"; // 7.PHP数据类型
/* 基础类型四种
* bool型:和C++中差不多,0,空白字符串和"0"以及NULL为FALSE,其他为TRUE
* 整型:前加0是八进制,加0x是十六进制,大于2147483647会被解释为浮点型
* 浮点型:范围在1.7E-38~1.7E+38之间,精确到小数点后15位
* 字符串:字符和字符串都统一当做字符串处理,字符串的三种定义方式如下(单引号,双引号,<<<标识符)
* */
echo '\n\r$foo\\\''; //除了对'和\要使用转义外,其它转义和变量名都是无效的
echo "\n\r$foo\\\'"; //转义都是有效的,可以使用{$foo}将变量分离解析 $str =<<<EOE
<br/>//使用<<<来包括字符串,在<<<之后提供一个标识符表示开始,最后提供一个相同的结束符表示结束,
注意标识符必须要从第一列开始,且除了结束符后的分号外,不能再加任何字符。
EOE;
echo $str;
echo "<br/>"; /* 两种扩展类型,这里简要介绍,后面的章节详述
* 数组:实际上是关联数组,可以用多种方法构造,这里使用array语言构造一个数组
* 对象:用class定义,new实例化,->引用成员变量及函数
* */
$arr = array("foo"=>"bar", 12=>true);
echo $arr["foo"];
echo $arr[12];
echo "<br/>"; class Person{
var $name;
function say(){
echo "Person say my name is $this->name";
}
}
$p = new Person;
$p->name = "TOM";
$p->say();
echo "<br/>"; /* 两种特殊类型
* 资源:保存到外部资源的一个引用,比如文件、数据库、图形画布等
* NULL类型:表示变量为空,直接赋值为NULL、unset后的变量、未声明变量都为NULL
*/
$file_handle = fopen("01.php", "r");
$img_handle = imagecreate(100, 50);
var_dump($file_handle);
var_dump($img_handle);
echo "<br/>"; // 8.类型转换,分为自动类型转换和强制类型转换
/* 自动类型转换的规则:
* 有bool型参与运算时,TRUE转化为1,FALSE转化为0
* NULL转化为0
* integer和float一起运算时,将integer转化为float
* 有字符串和数字型一起运算时,将字符串转化为数字
*/
$a = "100page" + 1.5; //自动类型转换种将字符串转化为数字的例子
echo $a; //输出101.5
echo "<br/>";
/* 强制类型转换有三种方法,如下所示
* 前两种不会改变原变量的类型,只是赋值到新的变量中
* 最后一种方法会改变原变量的类型
*/
$foo = (boolean) 10; //和C++相同,在变量前加(变量类型)
var_dump($foo);
$foo = intval(123.45); //使用intval()、floatval()、strval()进行变量转换
var_dump($foo);
settype($foo, "string");//使用settype(var, type);
var_dump($foo);
echo "<br/>"; // 9.变量类型的测试函数,用gettype()获得函数类型或者is_type()判断是否是某种type
$a = 12;
$b = 12.5;
echo gettype($a);
echo gettype($b);
var_dump(is_int($a));
var_dump(is_float($a));
echo "<br/>"; // 10.常量,用户可以用define自定义变量,用defined函数检测是否定义
define("CON_INT", 100); //常量一旦被定义就不能改变,并且可以在任何地方定义和访问
define("not_big", "hello", true); //传入true表示不区分大小写,否则区分
echo CON_INT; //使用常量不需要使用$符号
var_dump(defined('CON_INT'));
var_dump(defined('con_int'));
var_dump(defined("NOT_BIG"));
echo "<br/>"; // 11.魔术常量,随着位置的改变而改变,名字都是_NAME_,共8个
/* __FILE__ 当前文件名; __LINE__ 当前函数名
* __CLASS__ 当前类名; __METHOD__ 当前对象方法名;
* __FUNCTION__ 当前函数名; __NAMESPACE__ 当前命名空间名;
* __DIR__ 当前目录名; __TRAIT__ Trait 的名字;
*/
echo "当前行: ".__LINE__."<br/>";
echo "当前文件:".__FILE__."<br/>";
echo "当前目录:".__DIR__."<br/>"; // 12.运算符
/* 常用运算符和C++中一样,主要有以下几个运算符不太一样
* . 连接运算符号,用于连接字符串,衍生出 .=操作符
* == 左边操作数灯油右边操作数时返回true(这个操作符时将两个数转成同一类型后比较的)
* === 左边操作数等于右边操作数,并且类型也相同时返回true
* <>或!= 当左边操作数不等于右边操作数时返回true,否则返回false
* !== 当左边操作数不等于右边操作数,或者它们类型不相同时返回true,否则返回false
* `` 反引号,将其中内容作为外壳命令执行,并将其执行信息返回
* @ 错误控制运算符,忽视表达式可能产生的错误信息
* => 数组下标指定符,指定数组的键与值
* instanceof 类型运算符,测定一个对象是否来自指定的对象类
*/
$a = 0;
var_dump($a == "0"); //相等
var_dump($a === "0"); //不相等,类型不一样
echo "<pre>".`dir`."</pre>"; //执行windows的dir命令并输出
@$a = $a / 0; //如果不加@PHP会报错 // 13.语言流程控制结构 ,与C++基本一样,只在break和continue处有所不同
// 用break n语言表示直接跳出n层循环,continue n类似
for($i = 0; ; $i++) {
for ($j = 0; $j < 5; $j++){
if ($j > $i) break;
if ($i == 5) break 2; //直接跳出两层循环
echo $j;
}
}
?>
<br/>
</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