PHP05 PHP语言基础
学习要点
- 初识PHP
- 基础语法
- 变量
- 常量
- 运算符
- 表达式
学习目标
- 掌握PHP基础语法
- 掌握PHP变量
- 掌握PHP常量
- 掌握PHP表达式
- 掌握PHP运算符
初识PHP
第一个PHP程序
- 编写代码
1、使用记事本编写代码,保存为hello.php。
2、文件保存在D:\wamp\www目录
3、IE地址栏访问:http://localhost:80/hello.php
- 注意要点
1、所有php代码以<?php开头,以?>结尾(可省略)。
2、echo是php用来输出字符串的语句。“echo — Output one or more strings“;
- echo是一个语言结构而非函数,因此它无法被变量函数调用。
- 多个参数,则不能用小括号。使用“.”连接。
- 格式:void echo ( string $arg1 [, string $... ] )
3、每条语句以“;“号结束。?>隐含分号,所以最后一句指定可以不使用“;”。
4、文件后缀名必须以php结尾。当我们向服务器调用hello.php文件时候,服务器就会自动给php后缀的文件需要提交给php功能模块处理,处理结果再返回给客户端浏览器。
PHP处理HTML表单
- 编写代码
表单页面代码:
<fieldset> <legend>用户信息</legend> <form action="D02Action.php" method="post"> <p> <label for="userName">姓名:</label> <input type="text" name="userName" id="userName"> </p> <p> <label for="userLocal">来自:</label> <input type="text" name="userLocal" id="userLocal"> </p> <p> <input type="submit" value="提交"> <input type="reset" value="重置"> </p> </form> </fieldset>
表单处理页面代码:
大家好,我的名字叫:<?php echo $_POST['userName'];?> <br> 我来自:<?php echo $_POST['userLocal'];?>
- 注意要点
1、必须在服务器环境中运行表单页面和表单处理页面。
2、$_post为PHP的全局变量,所有以post方式提交的数据都保存在这个变量中。
3、php处理多选框checkbox的方法涉及到php数组概念,后续课程讲解。
上机练习01 PHP处理表单数据
基础语法
PHP分隔符
因为PHP是嵌入式脚本语言,所以需要某种标记把PHP代码和HTML代码隔离开来,这种标记就是PHP分隔符:
- <?php PHP代码 ?> //XML风格,标准用法,推荐使用
- <script language=”php”> PHP代码 </script> //长风格标记
- <? PHP代码 ?> //简短风格标记,需要在php.ini中打开short_open_tag
- <% PHP代码 %> //ASP风格标记,需要在php.ini中打开asp_tags
服务器端的PHP解析器将解析分隔符中的代码,分隔符之外的代码被忽略。解析完成后生成完整HTML页面返回给客户端浏览器。
PHP注释
- //单行注释
- #号单行注释
- /**/多行注释
- /**
*PHPDocumentor注释。PHPDocumentor工具可以对代码注释自动生成代码。
*/
示例:
<?php echo "第1行PHP代码<br>";//单行注释 //echo "第2行PHP代码<br>";//代码注释 echo "第3行PHP代码<br>"; /** 多行注释 @param 意义 */ echo "第4行PHP代码<br>"; /* * 多行注释 */ echo "第5行PHP代码<br>"; #单行注释 echo "第6行PHP代码<br>"; echo "第7行PHP代码<br>"; ?>
空白符处理
空白符:空格、Tab制表符、换行
- 下列情况使用两个空行
1.一个源文件的两个代码片段之间。
2.两个类的声明之间。
- 下列情况使用一个空行
1.两个函数声明之间。
2.函数内的局部变量和函数的第一条语句之间。
3.块注释或单行注释之前。
4.一个函数内的两个逻辑代码段之间。
- 空格的应用规则是可以通过代码的缩进来提高可读性
1.空格一般应用于关键字与括号之间。注意:函数名称与左括号之间不应该用空格分开。
2.在函数的参数列表中的逗号后面插入空格。
3.数学算式的操作数与运算符之间应该添加空格(二进制运算与一元运算除外)。
4.for语句中的表达式应该用逗号分开,后面添加空格。
5.强制类型转换语句中的强制类型的右括号与表达式之间应该用逗号隔开,并添加空格。
PHP数据类型
PHP属于弱类型语言,变量的数据类型不必由开发人员指定,而是由程序执行过程中根据上下文环境决定变量的数据类型。
PHP变量的数据类型可以分为:
- 标量类型:整数类型、浮点类型、字符串类型、布尔类型。
- 复合类型:数组类型和对象类型。
- 特殊类型:resource、NULL
- 伪类型:mixed,number,callback
如果要查看某个表达式的值和类型,可以使用函数var_dump()。
1.整数类型:integer
$i = 123;//十进制整数
$i = -123;//指定一个负数 $i = 076;//指定一个八进制数 $i = 0x7A;//指定一个十六进制数
2.浮点类型:float
两种表示形式
$f = 1.23; $f = 1.23e3;//1.23*10*10*10=1230 $f = 1.23E-3;//1.23/1000=0.00123
3.字符串类型:string
$s = “php string”;或者 $s = ‘php string’;
单引号和双引号字符串的区别:
- 双引号字符串中如果有变量,则变量会被实际值替换。明确表示字符串中的变量:${var}或者{$var}。
- 单引号字符串则不会替换变量字符,也不会对“\”和“’”之外的字符转义。PHP高效处理字符串,推荐使用。
定界符定义字符串(不能初始化类成员):
$string=<<<STR
定界符….. STR; Echo $string;
定界符中的变量也会被解析。通常用来从文件或者数据库中输出大段文本。通常不需要使用转义字符,但也可以在双引号中使用。
PHP中的转义字符及说明:
特殊字符 |
含义 |
\r |
指定回车符号 |
\n |
指定换行符号 |
\t |
指定制表符 |
\\ |
指定\ |
\$ |
指定美元符号 |
\” |
指定“号 |
PHP中的字符串连接采用“.”号:$str1.$str2。
4.布尔类型:boolean
$flag = true; $falg = FALSE;//true或false值不区分大小写;true为1,false为0
5.数组类型:array
PHP数组定义:
$arr = array(“spring”,”summer”,”fall”,”winter”);
访问数组,通过下标(也称为:索引、键)访问:
echo $arr[1];
另一种访问数组方式,通过字符串索引访问(也称为关联数组访问):
数组定义:key
$arr = array(“sp”=>“spring”,”su”=>”summer”,”fa”=>”fall”,”wi”=>”winter”);
访问:$arr[“sp”]
6.对象类型:object
由一组属性值和一组方法构成。
<?php class Person{ var $name; function say(){ echo "我的名字是:".$this->name; } } $p=new Person(); $p->name="tom"; $p->say(); ?>
7.资源类型:resource
资源是一种特殊类型的变量,保持了到外部资源的一个引用。通过专门函数建立和使用,包括:打开文件、数据库连接、图形画布区域等的特殊句柄,由程序员创建、使用和释放。系统有垃圾回收机制。free-result函数用来手工释放资源。
如下语句,如果资源创建成功,则返回资源引用,否则返回false。
<?php //文件资源 $file_handle=fopen("info.txt", "w"); var_dump($file_handle);//输出resource(3, stream) //目录资源 $dir_handle=opendir("c:\\WINDOWS\\Fonts"); var_dump($dir_handle);//输出resource(4, stream) //数据库连接资源 $link_mysql=mysqli_connect("localhost","root","rootkit"); var_dump($link_mysql);//输出object(mysqli)[1]... //画板资源 $img_handle=imagecreate(100, 100); var_dump($img_handle);//输出resource(6, gd) //XML解析器资源 $xml_parser=xml_parser_create(); var_dump($xml_parser);//输出resource(7, xml) ?>
8.NULL类型
表示一个变量没有值。不表示空格、0、以及空字符串。表示一个变量的值为空。
NULL值的情况:
- 将变量值直接赋值为NULL。
- 声明的变量尚未被赋值。
- 被unset()函数销毁的变量。
- empty($var):
bool empty ( mixed $var )
如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
示例:
<?php $a=null; $b="tom"; unset($b); var_dump($a);//输出null var_dump($b);//输出null var_dump($c);//输出null ?>
9.伪类介绍
主要用在函数的参数中,用来接收多种类型的数据,甚至是其他函数作为回调函数使用。
mixed:一个参数可以接受多种不同的类型。
Number:一个参数可以是integer或者float。
Callback:可以是一个自定义函数或内置函数,或者对象的方法作为参数。除了array(),echo(),empty(),eval(),exit(),isset(),list(),print(),unset()。
上机练习2 输出商品购物清单
PHP数据类型转换
数据类型转换分为:强制类型转换和自动类型转换。
PHP弱类型变量,所以变量的类型默认都是自动转换。
- 自动类型转换
标量参与自动类型转换。注意:类型转换并不改变运算数本身的类型,改变的仅是这些运算数如何被求值。
Boolean,null,string,integer 转换为integer进行计算
Boolean,null,string,integer,float 转换为float进行计算
Boolean转换为0或者1
Null转换为0
Integer转换为float
字符串转换:123abc转为123;123.14abc转换为123.14。
<?php $var="100page"; $var+=2; $var=$var+1.3; $var=null+"10 pices Paper"; $var=5+"10.123 yuan"; ?>
- 强制类型转换
1、括号强制类型转换
(int),(integer)
(bool),(boolean)
(float),(double),(real)
(string)
(array)
(object)
2、函数类型转换
Intval()
Floatval()
Strval()
3、以上两种类型转换并不改变变量本身的类型,而是新类型赋给新变量进行计算。如果要改变,则使用settype()函数来设置变量的类型。
例如:
$var=”ture”; Settype($var,”string”);
- 类型转换细节
1.整数转浮点数,精度不变。
2.浮点数转整数,自动舍弃小数部分。确保浮点数的范围没有超过整数范围,否则结果不确定。
3.Null转换为字符串,则为空字符“”。
变量
变量的声明
变量是内存中存储数据的地址别名。
变量的声明必须使用 $ 符号开头,后面跟上变量名,使用“ =” 对变量赋值。
变量的作用域:函数局部变量作用域在函数内部。如果不是函数内部变量,则作用域在php标记开始和结束之间,以及页面中所有开启的php标记中使用,也包括include和require引入的文件中。如果把变量放在cookie或者session中,则多个页面都可以访问变量。
常用变量测试函数:
Unset():释放指定变量
Isset():检测变量是否设置
Empty():检测一个变量是否为空
例如:
$var=’’; Empty($var); Isset($var); Unset($var);
推荐使用!empty($var)判断变量存在且不能为空。
变量的命名
严格区分大小写。但是内置结构、内置函数、自定义函数以及关键字不区分大小写。
变量名规范:
字符或者下划线开头,后头跟上任意数量的字母、数字或者下划线。 中间不能有空格和点。骆驼命名法则。
可变变量
动态的设置和改变变量的变量名。
例如:
$hi=”hello”; $$hi=”PHP”; //$$hi等价于$hello
变量的引用赋值
变量总是传值赋值。意味着两个变量相互赋值,改变其中一个变量的值将不会影响另一个变量的值,两个变量的值存在复制。
引用赋值:所有变量指向同一个数值。改变值,所有变量值发生改变。使用&符号。
例如:
$foo=’bob’; $bar=&$foo;
$bar=’my name is tom’;//此时$foo的值变成多少?
与c语言&区别。C语言中&表示变量共体。Php中不会导致共体,只是把各自的值相关联起来。使用unset()不会导致所有引用变量消失。
变量类型的测试函数
Var_dump():查看某个表达式的值和类型
Gettype():确定变量类型返回类型名称。
返回true或者false的is_type函数。
- Is_bool():判断是否是布尔型
- Is_int(),is_integer(),is_long():判断是否是整型
- Is_float(),is_double(),is_real():判断是否是浮点型
- Is_string():判断是否是字符串
- Is_array():判断是否是数组
- Is_object():判断是否是对象
- Is_resource():判断是否是资源类型
- Is_null():判断是否为空
- Is_scalar():判断是否是标量
- Is_numeric():判断是否是任何类型的数字或者数字字符串
- Is_callable():判断是否是有效的函数名。
常量
用于数据计算中固定的值,一旦定义,程序运行过程中不能改变的量。一般是全局作用域。只能是变量数据声明成常量。
- 定义和声明
define(string name,mixed value [,bool case_insensitive]);//定义常量函数
第一个参数:常量名,不需要$符号
第二个参数:常量值
第三个参数:如果为true,常量不区分大小写,如果为false,则区分。
- 常量和变量的区别
1. 常量前面没有美元符号($)
2. 常量只能用 define() 函数定义,而不能通过赋值语句
3. 常量可以不用理会变量范围的规则而在任何地方定义和访问
4. 常量一旦定义就不能被重新定义或者取消定义
5. 常量的值只能是标量
- 系统预定义常量
1.内核预定义常量:是在PHP的内核中就定义好了的常量。区分大小写。
2.PHP_VERSION:返回PHP的版本。
3.PHP_OS:返回执行PHP解释器的操作系统名称。
4.PHP_EOL:系统换行符,Windows是(\r\n),Linux是(\n),MAC是(\r)。
- 标准预定义常量:PHP默认定义的常量。区分大小写。
M_PI:返回圆周率π的值。
例如:
<?php echo 'PHP常用的预定义常量'.'<br><br>'; echo '当前php的版本为(PHP_VERSION):'.PHP_VERSION.'<br><br>'; echo '当前所使用的操作系统类型(PHP_OS):'.PHP_OS.'<br><br>'; echo 'web服务器与PHP之间的接口为(PHP_SAPI):'.PHP_SAPI.'<br><br><br>'; echo '最大的整型数(PHP_INT_MAX):'.PHP_INT_MAX.'<br><br>'; echo 'php默认的包含路径(DEFAULT_INCLUDE_PATH):'.DEFAULT_INCLUDE_PATH.'<br><br>'; echo 'pear的安装路径(PEAR_INSTALL_DIR):'.PEAR_INSTALL_DIR.'<br><br>'; echo 'pear的扩展路径(PEAR_EXTENSION_DIR):'.PEAR_EXTENSION_DIR.'<br><br>'; echo 'php的执行路径(PHP_BINDIR):'.PHP_BINDIR.'<br><br>'; echo 'php扩展模块的路径为(PHP_LIBDIR):'.PHP_LIBDIR.'<br><br>'; echo '指向最近的错误处(E_ERROR):'.E_ERROR.'<br><br>'; echo '指向最近的警告处(E_WARNING):'.E_WARNING.'<br><br>'; echo '指向最近的注意处(E_NOTICE):'.E_NOTICE.'<br><br>'; echo '自然对数e值(M_E):'.M_E.'<br><br>'; echo '数学上的圆周率的值(M_PI):'.M_PI.'<br><br>'; echo '逻辑真值(TRUE):'.TRUE.'<br><br>'; echo '逻辑假值(FALSE):'.FALSE.'<br><br>'; echo '当前文件行数(__LINE__):'.__LINE__.'<br><br>'; //是两个下划线 echo '当前文件路径名(__FILE__):'.__FILE__.'<br><br>'; echo '<br>'.'当前被调用的函数名(__FUNCTION__):'.__FUNCTION__.'<br><br>'; echo '类名(__CLASS__):'.__CLASS__.'<br><br>'; echo '类的方法名(__METHOD__):'.__METHOD__.'<br><br>'; ?>
- 魔术常量
根据他们的使用位置而值发生改变。
- __LINE__ :返回文件中的当前行号。也可写成__line__。
- __FILE__:返回当前文件的绝对路径(包含文件名)。
- __DIR__:返回当前文件的绝对路径(不包含文件名),等价于 dirname(__FILE__)。
- __FUNCTION__:返回当前函数(或方法)的名称。
- __CLASS__:返回当前的类名(包括该类的作用区域或命名空间)。
- __TRAIT__:返回当前的trait名称(包括该trait的作用区域或命名空间)。
- __METHOD__:返回当前的方法名(包括类名)。
- __NAMESPACE__:返回当前文件的命名空间的名称。
运算符
按操作数分类
一元运算符:!true //操作符+操作数
二元运算符:$a+$b //操作数+操作符+操作数
三元运算符:true?1:0; // 表达式+操作符+表达式+操作符+表达式
按功能分类
- 算术运算符
备注:另外还有++,--,递增递减运算符
- 字符串运算符
- 赋值运算符
PHP 赋值运算符用于向变量写值。
PHP 中基础的赋值运算符是 "="。这意味着右侧赋值表达式会为左侧运算数设置值。
- 比较运算符
PHP 比较运算符用于比较两个值(数字或字符串):
- 逻辑运算符
- 位运算符
位运算符允许对整型数中指定的位进行求值和操作。
位移在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。
要用括号确保想要的优先级。例如 $a & $b == true 先进行比较再进行按位与;而 ($a & $b) == true 则先进行按位与再进行比较。
- 数组运算符
- 其他运算符
1.三元运算符:(?:)
2.执行运算符:(``)反引号。表示里面的内容作为操作系统命令来执行,并将其输出信息返回。效果与函数shell_exec()相同。为了保持跨平台,尽量使用函数。
3.错误控制符:用来屏蔽表达式产生的错误信息。经常放在——如果某处能获得值,就在他前面加@符号。例如:@$sum=100/0;
- 运算符优先级
上机练习3:输入一个5位数字,计算各位数字之和
提示:表单输入数字,处理页面处理数字并输出。
表达式
表达式是变量、常量、运算符号的组合。
- 最基本表达式是常量和变量:$a=5
- 稍微复杂一点的表达式是函数:$a=func();
- 递增递减表达式:$a++,--$a;
- 比较表达式:$a>5
- 组合运算赋值表达式:$a+=5;
- 三元运算表达式:$v=($a?$b=5:$c=10);
PHP05 PHP语言基础的更多相关文章
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...
- C#语言基础
第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了 ...
- C语言基础回顾
第一章 C语言基础 1. C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...
- 黑马程序员_ C语言基础(二)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): 1.Hello W ...
- C#语言基础— 输入与输出
C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...
- 【GoLang】GO语言系列--002.GO语言基础
002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
随机推荐
- finalize方法的作用
finalize是在对象回收前做一些清扫工作,以及可清理栈上的内存,比如调用本地方法可能在栈上创建对象.即使对象不可达,也并不是非死不可,还是可以抢救一下,当一个对象没有与GCroot ...
- Ruby 类的创建
class Language def initialize(name, creator) @name = name @creator = creator end def description pu ...
- Start Developing Mac Apps -- Mac App Store Mac 应用商店
Mac App Store The information you’ve read so far focused on how to create an app in Xcode. However ...
- hibernate的基础学习--一对一关联
一对一关系以丈夫和妻子模型 配置文件 妻子配置文件: <?xml version="1.0" encoding="utf-8" ?> <!DO ...
- bzoj 2946: [Poi2000]公共串【SAM】
对第一个串建SAM,把剩下的串在上面跑,每次跑一个串的时候在SAM的端点上记录匹配到这的最大长度,然后对这些串跑的结果取min,然后从这些节点的min中取max就是答案 注意在一个点更新后它的祖先也会 ...
- 分布式集群环境下,如何实现session共享二(项目开发)
在上一篇分布式集群环境下,如何实现session共享一(应用场景)中,介绍了在分布式集群下,需要实现session共享的应用场景.并且最后留下了一个问题:在集群环境下,如何实现session的共享呢? ...
- 跟我一起玩Win32开发(11):使用控件——先来耍一下按钮
用户通过控件与应用程序交互,在吹牛之前,先介绍一个工具,这是官方的工具,使用它,你可以预览常用控件的外观.样式,以及对控进行操作时接收和发送哪些消息.下载地址如下: http://www.micros ...
- UVA - 1349 D - Optimal Bus Route Design
4. D - Optimal Bus Route Design 题意:给出n(n<=100)个点的带权有向图,找出若干个有向圈,每个点恰好属于一个有向圈.要求权和尽量小. 注意即使(u,v)和( ...
- Bits Equalizer UVA - 12545
点击打开链接 #include<cstdio> #include<cstring> /* 别看错了:0能变1,1不能变0 能完成的条件是,s与t长度相等且s中0数量和?数量之和 ...
- php 缩略图
<!DOCTYPE html><!-- HTML5表单 --><form method="post" action="" enct ...