PHP语言入门
2.1 PHP语言基础
2.1.1 PHP文件格式
Helloworld.php
<Html>
<head>
<title>Hello World!</title>
</head>
<body>
<?php
//输出Hello,World
echo "Hello,World";
?>
</body>
</html>
2.1.2 PHP标记
<?php……?>
<?……?>
<script language=”php”>……<script>
<%……%>
<?php echo("第一种书写方法!\n"); ?>
<script language="php">
echo ("script书写方法!");
</script>
<%
echo("这是ASP的标记输出");
%>
<?
echo("这是PHP的的简写标记输出");
?>
<?php
$expression=1;
if ($expression) {
?>
<strong>这是真的!</strong>
<?php
} else {
?>
<strong>这是假的!</strong>
<?php
}
?>
2.1.3 PHP 文件爱女的访问形式
PHP为服务端执行的语言,必须通过服务器解释才能执行
<Html>
<head>
<title> Hello World!</title>
</head>
<body>
<b>hello world!</b>
</body>
</html>
2.1.4 PHP程序注释
<?php
echo "C++语言注释的方法即 // <br>"; // 采用C++的注释方法
/* 多行注释
对于大段的注释很有用的哦*/
echo "多行注释方法即 /*...*/ <br>";
echo "Unix的注释方法即 # <br>"; # 使用UNIX Shell语法注释
?>
<?php
/*
echo "不能嵌套使用多行注释符号\n"; /* 嵌套使用会出错*/
*/
?>
2.1.5 PHP语法概述
类似于C/C++
2.2 PHP的变量
2.2.1 PHP的变量命名
PHP变量名是区分大小写的,和C语言是一致的;
变量名必须是以美元符号($)开始;
变量名开头可以以下划线开始;
变量名不能以数字字符开始。
2.2.2 PHP的数据类型
<?php
$True="我是变量" . True;
echo($True);
echo("<BR>");
echo("我是关键字" . True)
?>
<?php
$int_D=2147483647; //十进制赋值
echo($int_D);
echo("<br>");
$int_H=0x7FFFFFFF; //十六进制赋值
echo($int_H);
echo("<br>");
$int_O=017777777777; //八进制赋值
echo($int_O);
echo("<BR>");
?>
<?php
$float_1=90000000000;
echo($float_1);
echo("<br>");
$float_2=9E10;
echo($float_2);
echo("<br>");
$float_3=9E+10;
echo($float_3);
?>
<?
$single_str='我被单引号括起来了!<br>';
echo $single_str;
$single_str='输出单引号:\'嘿嘿,我在单引号里面\'<br>';
echo $single_str;
$single_str='输出双引号:"我在双引号里面"<br>';
print $single_str;
$single_str='输双美元符号:$';
print $single_str;
?>
<?
$Double_str="我被双引号括起来了!<br>";
echo $single_str;
$single_str="输出单引号:'嘿嘿,我在单引号里面'<br>"; //不需要转义符
echo $single_str;
$single_str="输出双引号:\"我在双引号里面\"<br>"; //需要转义符
print $single_str;
$single_str="输出美元符号:\$ <br>"; //需要转义符
print $single_str;
$single_str="输出反斜杠:\\ <br>"; //需要转义符
print $single_str;
?>
<?
$heredoc_str =<<<heredoc_mark
你好<br>
美元符号 $ <br>
反斜杠 \<br>
"我爱你"<br>
'我恨你'
heredoc_mark;
echo $heredoc_str;
?>
本实例演示字符串中对变量的引用:<br>
<?php
$str_1 = "我是变量的值!";
$str_2 = "str_1 : $str_1<br>"; //双引号字符串中包含变量$str_1
echo $str_2;
$str_1 = '我是变量的值';
$str_2 = 'str_1 : $str_1<br>'; //单引号中包含字符串的值
echo $str_2;
$str_1 = "我是变量的值!";
$str_2 = "str_1 : $str_12 <br>"; //引用的变量名后,多了个字符即$str_12
echo $str_2;
$str_1 = "我是变量的值!";
$str_2 = "str_1 : ${str_1}2 <br>"; //引用的变量名后,多了个字符即$str_12
echo $str_2;
?>
<?php
$a=""; //空字符串
$b = 3.1; //浮点型
$c= TRUE; //布尔型
$d = 2147483647; //整型
$e = 2147483648; //超过整型的范围,自动编程浮点型
$f= 0x80000000 ; //十六进制
$g="hi"; //字符串
$h=array(1,2); //数组
//分别输出类型
echo '$a类型是:';
var_dump($a);
echo '<br>$b类型是:';
var_dump($b);
echo '<br>$c类型是:';
var_dump($c);
echo '<br>$d类型是:';
var_dump($d);
echo '<br>$e类型是:';
var_dump($e);
echo '<br>$f类型是:';
var_dump($f);
echo '<br>$g类型是:';
var_dump($g);
echo '<br>$h类型是:';
var_dump($h);
?>
<?php
$a=0.1;
$b='hi';
$c=True;
if (is_numeric($a))
echo '$a是数值型<br>';
else
echo '$a不是数值型<br>';
if (is_int($a))
echo '$a是整型<br>';
else
echo '$a不是整型<br>';
if (is_string($b))
echo '$b是字符串型<br>';
else
echo '$b不是字符串型<br>';
if (is_bool($c))
echo '$c是布尔型<br>';
else
echo '$c不是布尔型<br>';
?>
<?php
$a=0.1; //定义变量
$b=0; //0值
$c=""; //空字符串
if (isset($a))
echo '$a已经被定义<br>';
else
echo '$a没有被定义<br>';
if (!empty($a))
echo '$a不为空<br>';
else
echo '$a为空<br>';
if (isset($b))
echo '$b已经被定义<br>';
else
echo '$b没有被定义<br>';
if (!empty($b))
echo '$b不为空<br>';
else
echo '$b为空<br>';
if (isset($c))
echo '$c已经被定义<br>';
else
echo '$c没有被定义<br>';
if (!empty($c))
echo '$a不为空<br>';
else
echo '$a为空<br>';
if (isset($d))
echo '$d已经被定义<br>';
else
echo '$d没有被定义<br>';
if (!empty($d))
echo '$d不为空<br>';
else
echo '$d为空<br>';
?>
2.2.3 数据类型转换
<?php
echo gettype((bool) "") . "<br>"; // bool(false)
echo gettype((bool) 1) . "<br>"; // bool(true)
echo gettype((bool) -2) . "<br>"; // bool(true)
echo gettype((bool) "foo") . "<br>"; // bool(true)
echo gettype((bool) 2.3e5) . "<br>"; // bool(true)
echo gettype((bool) array(12)) . "<br>"; // bool(true)
echo gettype((bool) array()) . "<br>"; // bool(false)
?>
<?php
$a=123456;
$b=123.456;
$c=-1.3e8;
//通过echo函数输出时,自动转换成
echo $a . "abc<br>";
echo $b ."cde<br>";
echo $c . "abc<br>";
//字符串转换成数值
$foo = 1 + "10.5";
echo $foo . "<br>";
$foo = 1 + "-1.3e3";
echo $foo ."<br>";
$foo = 1 + "bob-1.3e3";
echo $foo ."<br>";
$foo = 1 + "bob3";
echo $foo ."<br>";
$foo = 1 + "10 Small Pigs";
echo $foo ."<br>";
$foo = 4 + "10.2 Little Piggies";
echo $foo ."<br>";
$foo = "10.0 pigs " + 1;
echo $foo ."<br>";
$foo = "10.0 pigs " + 1.0;
echo $foo ."<br>";
$foo = 1 + "010";
echo $foo ."<br>";
$foo = 1 + "0x10";
echo $foo ."<br>";
$foo = 1 + "\x10";
echo $foo ."<br>";
$bar = 1 + "\x35"; //0x35 is ASCII for '5'
echo $foo ."<br>";
$foo = 1 + "0x\x41\x31"; //0x41 is ASCII 'A'; 0x31 is '1'
echo $foo ."<br>";
?>
2.2.4 PHP中的预订义变量
<?php
echo '提交方法为:'. $REQUEST_METHOD;
echo '<br>网络协议为:' .$SERVER_PROTOCOL;
?>
<?php
echo '主机名称:'.$HTTP_SERVER_VARS['HTTP_HOST'];
echo '<br>服务器根路径:'.$HTTP_SERVER_VARS['DOCUMENT_ROOT'];
?>
<?php
echo '当前执行脚本文件:'.$_SERVER['PHP_SELF'];
echo '<br>当前执行脚本文件绝对路径:'.$_SERVER['SCRIPT_FILENAME'];
?>
2.2.5 变量的引用
<?php
$myName="little";
$YourName=&$myName; //引用变量
$myName="littlePig<br>";
print($YourName);
$YourName="littleCat<br>";
print($myName);
?>
2.2.6 变量的变量
<?php
$myStr="myName"; //设定变量
$$myStr="Marry"; //设定变量的变量即$$myStr
echo $myStr; //输出变量
echo "<br>";
echo $$myStr; //输出变量的变量
echo "<br>";
echo $myName; //直接输出$myName和使用$$mystr结果一样
echo "<br>";
$myStr="yourName";
if (!isset($$myStr))
echo '$$myStr变量不存在呢';
?>
2.2.7 常量
<?php
define("CONSTANT", "Hello world\n");
echo CONSTANT . "<BR>"; // 输出"Hello world."
echo Constant . "<BR>"; // 输出"Constant" ,表示没有该常量
define("GREETING", "Hello you\n", true);
echo GREETING. "<BR>"; // 输出"Hello you."
echo Greeting. "<BR>"; // 输出"Hello you.",因为设定大小写不敏感
define("MAXSIZE", "100\n");
echo MAXSIZE; //输出
echo constant("MAXSIZE"). "<BR>"; // 输出
echo(defined("ONE")). "<BR>";
define("ONE","Hello,One");
echo(defined("ONE")). "<BR>"; //如果定义返回True,使用echo输出显示
?>
<?php
echo "程序当前行:". __LINE__;
echo "<br>操作系统:".PHP_OS;
echo "<br>PHP版本:" .PHP_VERSION
?>
2.3 PHP的运算符
2.3.1 算术运算符
<?php
$ONE= 1;
$TWO= 2;
$TREE= 3;
echo $ONE+$TWO . "<br>"; //加
echo $ONE-$TWO . "<br>"; //减
echo $ONE*$TWO . "<br>"; //乘
echo $ONE/$TWO . "<br>"; //除
echo $TREE%$TWO. "<br>"; //取余数
?>
2.3.2 赋值运算符
<?php
$a= 2;
$a +=3; //$a=$a+3,值为
echo $a . "<br>";
$a -=3; //$a=$a-3,值为
echo $a . "<br>";
$a *=3; //$a=$a*3,值为
echo $a . "<br>";
$a /=3; //$a=$a/3,值为
echo $a . "<br>";
?>
2.3.3 位运算符
<?php
$a= 7;
$b= 14;
$myVal= $a & $b; //位与
echo $myVal. "<br>";
$myVal=$a | $b; //位或
echo $myVal. "<br>";
$myVal= $a ^ $b; //位异或
echo $myVal. "<br>";
$myVal= ~$a; //为取反
echo $myVal. "<br>";
?>
2.3.4 三元运算符
2.3.5 比较运算符
<?php
echo("10小于吗:" . ((10<10)?"True":"False") . "<br>");
echo("10小于等于吗:" . ((10<=10)?"True":"False") . "<br>");
echo("10大于吗:" . ((10>10)?"True":"False") . "<br>");
echo("10大于等于吗:" . ((10>=10)?"True":"False") . "<br>");
echo("10等于吗:" . ((10==10)?"True":"False") . "<br>");
echo("10不等于吗:" . ((10!=10)?"True":"False") . "<br>");
?>
2.3.6 字符串运算符
<?php
$a="Hello ";
$b="World";
$ab=$a . $b ."<br>"; //字符串连接符号.
echo $ab;
$a="some";
$a .="thing" . "<BR>"; //赋值运算符.=
echo $a;
$a="24 five 6" + 6;
echo $a . "<BR>";
$a="24five 6" + 6;
echo $a . "<BR>";
$a="five 6" + 6;
echo $a . "<BR>";
$a="24 five" . 6;
echo $a . "<BR>";
$a="24five" . 6;
echo $a . "<BR>";
?>
2.3.7 递增和递减运算符
<?php
$a=20;
echo "a++:" . $a++ ."<br>"; //后加
echo "变量a的新值:" . $a ."<br>";
$a=20; //重新赋值
echo "++a:" . ++$a ."<br>"; //先加
echo "变量a的新值:" . $a ."<br>";
$a=20; //重新赋值
echo "a--:" . $a-- ."<br>"; //后减
echo "变量a的新值:" . $a ."<br>";
$a=20; //重新赋值
echo "--a:" . --$a ."<br>"; //先减
echo "变量a的新值:" . $a ."<br>";
?>
2.3.8 逻辑运算符
2.3.9 运算符优先级
2.4 表达式
2.5 控制语句
2.5.1 条件语句
<?php
$achievement=91;
if ($achievement<60)
echo "你不及格";
elseif ($achievement>=60 && $achievement<70)
echo "你刚刚及格了";
elseif ($achievement>=70 && $achievement<80)
echo "你得了良好";
elseif ($achievement>=80 && $achievement<90)
echo "你很优秀哦!";
else
echo "你兼职太棒了!"
?>
<?php
switch (date("D")) {
case "Mon":
echo "今天星期一";
break;
case "Tue":
echo "今天星期二";
break;
case "Wed":
echo "今天星期三";
break;
case "Thu":
echo "今天星期四";
break;
case "Fri":
echo "今天星期五";
break;
default:
echo "今天放假";
break;
}
?>
2.5.2 循环语句
<?php
/* 应用,每个条件都有*/
for ($i = 1; $i <= 10; $i++) {
print $i. "-";
/* 应用,省略第个表达式*/
print "<br>";
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
print $i. "-";
}
print "<br>";
/* 应用,省略个表达式*/
$i = 1;
for (;;) {
if ($i > 10) {
break;
}
print $i. "-";
$i++;
}
print "<br>";
/* 应用*/
for ($i = 1; $i <= 10; print $i. "-", $i++);
print "<br>";
/* 应用 */
for ($i = 1; $i <= 10; $i++) :print $i;print "-";endfor;
?>
<?php
/* 应用*/
$i = 1;
while ($i <= 10) {
print $i++ . "-";
}
print "<br>";
/* 应用*/
$i = 1;
while ($i <= 10):
print $i . "-";
$i++;
endwhile;
print "<br>";
/* 应用*/
$i = 1;
while ($i<20):
print $i . "-";
$i++;
if ($i>10) break;
endwhile;
?>
2.5.3 break和continue语句
<?php
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* 只跳出switch循环*/
case 10:
echo "At 10; quitting<br />\n";
break 2; /* 跳出switch和while循环*/
default:
break;
}
}
?>
<?php
$i=0;
while ($i++<5) {
if ($i==2) { // 跳出,也就是不会输出i am 2
continue;
}
echo "i am $i <br>";
}
$i = 0;
while ($i++ < 5) {
echo "外层<br />\n";
while (1) {
echo " 中间层<br />\n";
while (1) {
echo " 内层<br />\n";
$i=6;
continue 3;
}
//因为每次到内层的时候,就跳到第一层,不会被执行
echo "我永远不会被输出的~~.<br />\n";
}
echo "我也是不会被输出的~~.<br />\n";
}
?>
2.6 数组
2.6.1 数组类型
枚举数组
关联数组
多维数组
<html>
<body>
<?php
$student=array("0"=>array("name"=>"James","sex"=>"male","age"=>"28"),
"1"=>array("name"=>"John","sex"=>"male","age"=>"25"),
"2"=>array("name"=>"Susan","sex"=>"female","age"=>"24"));
Print $student[2][age]
?>
</body>
</html>
2.6.2 数组初始化
使用数组标识符
2.6.3 数组的应用
<?php
// 创建一个简单的数组
$array = array(1, 2, 3, 4, 5);
print_r($array);
echo "<br>";
// 现在删除其中的所有单元,但保持数组本身的结构
foreach ($array as $i => $value) {
unset($array[$i]);
}
print_r($array);
echo "<br>";
// 添加一个单元(注意新的键名是5,而不是你可能以为的0)
$array[] = 6;
print_r($array);
// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>
2.7 函数
2.7.1 内置函数
2.7.2 自定义函数
2.7.3 函数变量的作用域
2.8 日期和时间处理
2.8.1 获取日期和时间
2.8.2 使用getdate函数获得日期信息
2.8.3 使用mktime函数取得一个日期的时间戳