PHP基本语法 原创
PHP定义:PHP(Hypertext Preprocessor缩写)超级文本预处理器,是服务器端嵌入到HTML中的脚本语言。
PHP在WEB中的用途
收集表单数据
生成动态网页
字符串处理
动态输出图像
服务器端文件系统操作
编写数据库支持的网页
会话跟踪控制
处理XML文件
支持利用大量的网络协议
服务器端的其他相关操作
具体内容参照细说PHP第二版 103页
(收集表单数据, 生成动态网页, 字符串处理, 动态输出图像, 服务器端文件系统操作, 编写数据库支持的网页, 会话跟踪控制, 处理XML文件, 支持利用大量的网络协议, 服务器端的其他相关操作)
PHP语言标记
用来退出PHP模式。
可以根据自己需要在HTML文件中像这样开启或关闭PHP模式。大多数嵌入式脚本语言都是这样嵌入
HTML中并和HTML一起使用的,如 CSS、JAVAScript、PHP、ASP以及JSP等。
注:1.可以将PHP嵌入到HTML中的任何位置,而且还可以嵌入HTML标签属性里。
2.嵌入了PHP代码的HTML文件后缀名必须使用 .php
3.如果整个文件全是PHP的代码,最后的问号尖括号(结束符)可以省略(推荐省略)
标记: 绿色
<!-- 在HTML中使用以下标记嵌入PHP脚本 -->
echo "服务器的时间".date("Y-m-d H:i:s")."
";
?>
五种嵌入标记格式: 1. 标准风格标记,属于XML风格,推荐使用。
2.=$variablename ?> 在HTML中嵌入纯变量时使用。
3.<% %> ASP风格的标记,移植性差,默认禁用的。在php.ini asp_tags 开启。
4. ?> 简短风格的标记,会干扰XML文档声明,在php.ini short_open_tag 开启。
5.
第一个程序PHP程序: phpinfo();
?>
注:可以查看系统配置的一些参数,如PHP版本,本地使用localhost/test1.php 访问
//设置时区
date_default_timezone_set("PRC");
//输出当前日期,并格式化成 0000-00-00格式
echo date('Y-m-d');
?>
echo '85期第一个页面';
?>
指令分隔符”分号“
php语句分为两种:一种是在程序中使用结构定义语句;例如:流程控制、函数定义、类的定义等。
另一种是在程序中使用功能执行语句,用来在程序中执行某些特定功能的语句称为指令。
例如:变量的声明、内容的输出、函数的调用等。指令用分号结尾。
注:一段PHP代码中的结束标记?>隐含表示了一个分号,所以在一个PHP代码段中的最后一行可以不用分号结束。推荐加分号。
程序注释
程序注释的作用:
1. 可以将写过的觉得不合适的代码暂时注释掉,不要急于删除,如果在想使用,可以打开注释重新启用。
2.注释的主要作用在于说明程序,给自己和他人在阅读程序时提供帮助,使程序更容易理解,也就是增
强程序代码的可读性,以方便维护人员维护。
3.注释对调试程序和编写程序也可起到很好的帮助作用。
$a = 12;
//对$a和12求和(单行注释上面空一个空行,写在要描述的代码上面)
echo $a + 12;
/*
1,多行注释前面要空出一个空白行,
可以写多行。
2,不能互相嵌套
输出一首诗
//出处:Jack 敲的
*/
function show()
{
echo '落花留意随流水,流水无心恋落花';
}
//文档注释
/**
*获取用户姓名和年龄
*@param $name string 用户名
*@param $age int 年龄
*@example getdata('jingjing',18);
*/
function getdata($name,$age)
{
echo '我叫'.$name.'今年芳龄'.$age;
}
四种注释符号:
多行注释: /* 多行内容 */
/** 多行内容 */ 文档注释,可以使用帮助文档软件导出。
单行注释: // 单行注释内容 (单行注释推荐使用)
# 单行注释 ( 脚本注释,不推荐使用)
注: 多行注释不可以在包含多行注释,多行注释可以包含单行注释。单行注释可以包含单行注释,单行注释可以包含多行注释。
注释要写在代码的右边或者上边,推荐写在代码上边,符合国际标准。
程序中使用空白的处理
下列情况应该总是使用两个空行:
一个源文件的两个代码段之间。
两个类的声明之间。
下列情况应该总是使用一个空行:
两个函数声明之间。
函数内的局部变量和函数的第一条语句之间。
块注释和单行注释之前。
一个函数内部的两个逻辑代码段之间,用来提高可读性。
空格的应用规则是可以通过代码的缩进提高可读性。
空格一般应用于关键字与括号之间,不过需要注意的是,函数名称与左括号之间不应该用空格分开。
一般在函数的参数列表中的逗号后面插入空格。
数学算式的操作数与运算符之间应该添加空格(二进制运算与一元运算除外)。
for语句中的表达式应该用逗号分开,后面添加空格。
强制类型转换语句中的强制类型的右括号与表达式之间应该用逗号隔开,添加空格。
注意:类声明、函数声明 的左大括号换行顶格写(推荐写法),循环结构语句中的除外。
//一个源文件的两个代码段之间使用2个空行
if($jingjing > 22){
echo '晶晶,你可以领证啦';
}else{
echo '再忍2年';
}
function show()
{
if($shenming == '男'){
echo '确定吗';
}else{
echo '请问泰国好玩吗?';
}
}
//两个类的声明之间使用2个空行
class person
{
}
class woman
{
}
//两个函数声明之间保留一个空白行
function show()
{
}
function showdata()
{
}
//函数内部两个逻辑代码段之间保留一个空白行
function show()
{
$nvhanzi = 'hanxu';
if($jingjing == '女'){
echo '允许她有1个男朋友';
}else{
echo '允许他有n女朋友';
}
if($jingjing == 'girl' ){
echo '小萝莉晶晶';
}else{
echo '小罗汉晶晶';
}
}
变量
变量定义:变量是用于临时存储值的容器。这些值可以是数字、文本、或者复杂得多的排列组合。
变量声明
格式: $变量名 = 变量值 (等号前后推荐使用空格,让格式更清晰)
例如: $name = "vilin"; (如果是字符串类型的值,需要用单引号或双引号扩起来)
$age = 27;
$a = $b = $c = 100; ( 同时声明多个变量)
输出变量:
echo '我的姓名是'.$name.',我的年龄是'.$age.'岁。
'; (单引号效率最高,推荐使用)
echo "我的姓名是 $name ,我的年龄是 $age 岁。
";
echo "我的姓名是{$name},我的年龄是{$age}岁。
";
PHP是弱类型语言,和JAVA及其他语言不同,声明时,不需要指定变量类型。
变量命名
命名相关规则:
1.必须以字母或者下划线开头。
2.可以使用字母、下划线、数字、中文、大部分特殊字符。(不推荐用中文和特殊字符)
3.声明的变量名称必须有意义
4.严格区分大小写,常量也区分大小写。
5.可以使用系统同名的系统函数、常量、关键字。(不推荐使用)
6.第一个单词小写,以后每个单子开头字母大写。如: aaaBbbCccc
可变变量
概念:就是说一个变量的变量名可以动态地设置和使用。一个普通的变量通过声明来设置,而一个可变变量获取了一个
普通的变量的值作为这个可变变量的变量名,
例如:
header("content-type=text/html;charset=utf-8");
$hi = 'hello';
$$hi = 'world';
echo $hi.$hello; //helloworld
echo '
';
echo $hi.$$hi; //helloworld
echo "
";
echo $hi.${$hi}; //helloworld
echo '
';
echo $hi." ${$hi}"; //hello world
echo '
';
echo "$hi ${$hi}"; //hello world
header("content-type:text/html;charset=utf-8");
$meinv = 'huihui';
$huihui = 'luoli';
$luoli = 'bilaoshi';
$bilaoshi = 'luohan';
echo $$$$meinv;
$login = $_GET['act'];
//$login();
function sina()
{
echo '使用sina账户登录';
}
function qq()
{
echo '使用qq账户登录';
}
function weibo()
{
echo '使用weibo账户登录';
}
sina();
qq();
变量的引用赋值
header("content-type:text/html;charset=utf-8");
$foo = 'Bob'; //声明一个变量
$bar = $foo; //把$foo的值赋给$bar
$foo = 'Ali'; //重新声明变量$foo
echo $bar.'
'; // 输出 Bob
echo $foo.'
'; //输出 Ali
echo '
';
$vilin = '潘晓亮';
$halin = &$vilin; //使用&引用赋值
$halin = "伊中凯";
echo $vilin.'
'; //输出伊中凯
echo $halin.'
'; //输出伊中凯
$vilin = "洋洋";
echo $vilin.'
'; //输出洋洋
echo $halin.'
'; //输出洋洋
unset($vilin); //销毁$vilin ,不影响 $halin
echo $halin.'
';
变量的类型
数据类型
四种标量类型
布尔型 bool、boolean 只有两种值 true false
整型 int、integer 如: -1 0 1 负整数 零 正整数
浮点型 float、double real 小数 带小数点的都是。
字符串 str、string 字符串使用'' "" 定界符 声明
两种复合类型
数组 array $arr=array('vilin',24,'男','汉')
对象 object
两种特殊类型
资源 resource
NULL
布尔型只会有两种结果: true false 即 真 假。
以下类型在转换成布尔型的值时为false:
1. $bool = false;
2. $bool = 0;
3. $bool = 0.00;
4. $bool = '0';
5. $bool = '';
6. $bool = null;
7. $bool = array();
8. 空资源
9. 被销毁的变量;
判断语句为:
if($bool){
echo 'true';
}else{
echo 'false';
}
单引号、双引号、定界符 的理解:
1.单引号、双引号、定界符都可以声明字符串。
2.单引号不能解析变量和转义字符 \ (解析效率高)
3.单引号中不能在包含单引号。(如果有,请使用转义字符)
4.转义字符在单引号中只能解析单引号,和转义字符本身。
5.双引号可以解析变量和转义字符。
6.双引号中不能在包含双引号。(如果有,请使用转义字符)
7.单引号中可以包含双引号,双引号中可以包含单引号。
8.转义字符在双引号中有更多的意义。(\n \r \t 等)
9.双引号可以解析包含在单引号中的变量,单引号也将被保留。
(用途:"select * from bbs_user where username='$username'";)
10.链接一个字符串和变量,或者链接两个变量使用符号"."
定界符: <<
TOM 命名随意,但是起始和终止名称要一致,终止要顶格写。
当字符串中有较多双引号时,用定界符来声明字符串
TOM;
NULL 包含三种情况:1.被赋值为 NULL值的变量。 2.尚未被赋值的变量。 3.被unset()函数销毁的变量。
几个函数的使用:isset() 判断变量是否被设置 empty() 判断变量值是否为空 配合if语句使用效果更好。
unset() 销毁变量。 gettype() 获取变量类型,可以传入数据库。 ()内可以是传值或者变量
var_dump() 获取变量类型 长度 值 ()内可以是传值或者变量
empty() 判断为空的几种情况:
1,空字符串
2,字符串0
3,整型0
4,浮点零
5,空数组
6, 空资源
7,false
8,null
9,被销毁变量
数据类型之间
相互转换
概念:数据转换就是指将变量或值从一种数据类型转换成其他数据类型。
一种:自动转换:通常只有4种标量类型才使用自动转换。这并没有改变这些运算数本身的类型。
转换规则:1.有布尔型参与运算时,TURE将转化为整型1,FALSE将转化为整型0后在运算。
2.有NULL值参与运算时,NULL转化为整型0再进行运算。
3.在integer型和float型参与运算时,先把integet型变量转成float类型后在进行运算。
4.有字符串和数字型(integet,float)数据参与运算时,字符串先转化为数字,在参与运算。转化后的数字是从字符串开始的数值型字符串,
如果在字符串开始的数值型字符串不带小数点则转为integer类型数字。如果带有小数点,则转为float 类型数字,例如,字符串"123abc"
转为整数123,字符串"123.45abc"转为浮点数 123.45,字符串"abc"转为整数0.
5.如果任何一个运算数是浮点数,则所有的运算数都被当成浮点数,结果也是浮点数。否则运算数会被解释为整数,结果也是整数。
实例:
$foo = "100page"; //$foo声明一个字符串
$foo += 2; //$foo = $foo + 2 值 102
$foo = $foo + 1.3; //值为103.3
$foo = null + "10 Little Piggies"; //值为 10
$foo = 5 + "10.05 yuan"; // 15.05
二种:强制转换
第一种转换方法:
(int),(integer):转换成整型。
(bool),(boolean):转换成布尔型。
(float),(double),(real):转换成浮点型。
(str),(string):转换成字符串。
(array):转换成数组。
(object):转换成对象。
如:$foo = 10;
$bar = (boolean)$foo; //可是是具体值或变量 返回 具体值
注:这种转换方法并没有转换变量本身的类型。
第二种转换方法:
intval(); //括号可填具体值或变量,返回 int
floatval(); //括号可填具体值或变量,返回 float
strval(); //括号可填具体值或变量,返回 string
注:在转换变量时,这种转换方法也不会改变变量本身类型。
第三种转换方法:
bool settype ( mixed var, string type )
将变量 var 的类型设置成 type。
type 的可能值为:
“boolean” (或为“bool”,从 PHP 4.2.0 起)
“integer” (或为“int”,从 PHP 4.2.0 起)
“float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
“string”
“array”
“object”
“null” (从 PHP 4.2.0 起)
如果成功则返回 TRUE,失败则返回 FALSE。
例子 1. settype() 示例
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo 现在是 5 (integer)
settype($bar, "string"); // $bar 现在是 "1" (string)
注:NULL 值转换字符串, 为空字符' '。会转换变量本身。
变量类型的测试函数
每个函数都是使用一个变量作为其参数,并返回ture或false :注:可以使用变量和值做参数。
is_bool(): 判断是否是布尔型。
is_int()、is_integet()和is_long(): 判断是否是整型。
is_float()、is_double() 、is_real():判断是否是浮点型。
is_string(): 判断是否是字符串。
is_array(): 判断是否是数组。
is_object(): 判断是否是对象。
is_resource: 判断是否是资源。
is_null(): 判断是否是为空。
is_scalar(): 判断是否是表里,也就是 布尔型、整型、浮点型、字符串。
is _numeric(): 判断是否是任何类型的数字或者数字字符串 整型 和 浮点型。
is_callable():判断是否是有效的函数名。
说明:面试题
array(),echo(),empty(),eval(),exit(),isset(),list(),print() 和 unset()。
是语言结构
$str = 'jingjing';
$n = 22;
$result = $str.$n;
var_dump($result);
//不是以数字开头的字符串参与算数运算,自动转换成0
var_dump($str + $n);
echo ' ';
$str = '13abc';
echo $str + 12;
echo $str * 3;
echo ' ';
$str = '1.001ab12c1';
echo $str * 3;
//浮点数参与运算:只要是浮点参与的算数运算,结果必然浮点
var_dump(1.9 + 0.1);
var_dump(0.1 * 10);
$str = 'abc';
var_dump($str .false);
var_dump($str.true);
echo ' ';
echo 1 + true;
echo ' ';
echo 1+ false;
常量
系统中的预定义常量:
PHP_OS 执行PHP解析的操作系统名称
PHP_VERSION 当前PHP服务器的版本
TRUE 代表布尔值,真
FALSE 代表布尔值,假
NULL 代表空值
DIRECTORY_SEPARATOR 根据操作系统决定目录的分隔符 win\或/linux
PATH_SEPARATOR 根据操作系统决定环境变量的目录列表分隔符
E_ERROR 错误,导致PHP脚本运行停止 1
E_WARNING 警告,会话导致PHP脚本运行终止 2
E_PARSE 解析错误,由程序解析器报告 4
E_NOTICE 非关键的错误,例如变量未初始化 8
M_PI 数学中的π
概念:常量一般用于一些数据计算中固定的数值,常量是一个简单值的标识符,一旦被定义,就不能改变也无法取消,作用域是全局的(当前的页面)。
1.常量一旦定义,就无法取消和改变它的值。
2.常量的应用范围是全局的(整个页面,如果要引入其他页面,请用include)。
3.常量命名区分大小写,惯例使用全大写。
4.常量以字母或下划线开头,后面跟字母、数字、下划线。
5.常量命名要有意义。
6.常量的值只能使用标量类型。
常量的定义和使用:
新的定义方式: const DB_HOST = 'localhost'; //5.3.6以后版本PHP 推荐使用
旧定义方式: define('DB_USER', 'root'); //括号内的都要加引号。
使用: DB_HOST;
使用:echo DB_USER;
查询常量是否被定义:defined('DB_USER'); //布尔型值。可使用if语句判断。
注:链接外部文件命令:include('define.php'); 实例请参考备注。
---------------------------------------define.php---------------------------------
header('content-type:text/html;charset=utf-8');
date_default_timezone_set('PRC');
echo date('Y-m-d');
define('DB_HOST', 'localhost');
const DB_USER = 'root';
const DB_PWD = '';
const CSS_PATH = './static/css/';
-----------------------------define.php------------------------------
--------------------------------------------------------shouye.php--------------------
header('content-type:text/html;charset=utf-8');
include('define.php');
?>
CCS
$link = mysql_connect(DB_HOST, DB_USER, DB_PWD);
var_dump($link);
-----------------------------------------------shouye.php-----------------------------
魔术常量:值会根据它们使用的位置而改变。
_FILE_ 当前所在位置的文件名
_LINE_ 当前所在位置的行序列
_FUNCTION_ 当前的函数名
_CLASS_ 当前的类名
_METHOD_ 当前对象的方法名