PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍


Posted in PHP onJuly 03, 2011

主要主题是
.php字符串中的变量扩展系统
.php中可用的更多数据类型
.类型之间的转换
.输入和使用变量和常量
.如何在php中构建表达式以及构建表达式所需的操作符
.使用语言中可用的控制结构
.1 输入字符串的更多介绍

<?php 
$hour = 16; 
$kilometres = 4; 
$content = "cookie"; 
echo " 4pm in 24 hour time is {$hour}00 hours.<br/>\n"; 
echo <<<DONE 
There are {$kilometres}000m in {$kilometres}km.<br/> 
The jar is now, indeed, full of ${content}s.<br/> 
DONE; 
?>

输出: 4pm in 24 hour time is 1600 hours.
There are 4000m in 4km.
The jar is now, indeed, full of cookies.
如果你希望在输出中生成确切的字符序列{$,就需要使用,{\$对它进行转义。
.2 数据类型的更多介绍
1.数组:使用array方法来声明数组。它获得一组初始值并且返回保存所有这些值的数组对象,在默认情况下,把从0开始的整数名称或者键(key)赋给数组中的值
,也可以指定要添加的新项的索引。$frunit[120]="nespola";但是你也可以使用字符串值指定键,而不使用赋值给它的默认数字。
$myfavourite=array("car"=>"ferrari","number“=>21,"city"=>"ouagadougou");

数组运算符 例子 名称 结果
$a + $b 联合 $a 和 $b 的联合。
$a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE。
$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE。
$a <> $b 不等 如果 $a 不等于 $b 则为 TRUE。
$a !== $b

<?php 
$a = array("a" => "apple", "b" => "banana"); 
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry"); 
$c = $a + $b; // Union of $a and $b 
echo "Union of \$a and \$b: \n"; 
var_dump($c); 
$c = $b + $a; // Union of $b and $a 
echo "Union of \$b and \$a: \n"; 
var_dump($c); 
?>

执行后,此脚本会显示:
Union of $a and $b: array(3) { ["a"]=> string(5) "apple" ["b"]=> string(6) "banana" ["c"]=> string(6) "cherry" } Union of $b and $a: array(3) { ["a"]=> string(4) "pear" ["b"]=> string(10) "strawberry" ["c"]=> string(6) "cherry" } 2.2.2对象 将在第四单元中面向对象的程序设计中使用。 2.2.3 特殊类型和值 NULL 是php中的特殊类型和值 ,它表示"无值".符合如下要求它就是null: .它们被设置为区分大小写的关键字null; .它们从没有赋值过 .使用unset方法明确清除了它们。 资源:有时候,php需要处理不一定来自php的对象,比如数据库或者操作系统对象的句柄。它们称为资源的特殊变量.
.3 强制类型转换
2.3.1 基础
隐式强制类型转换:当遇见隐式强制类型转换的最常见的情况是:
.二进制运算操作符
.布尔表达式和表达式操作符
.需要字符串的特定方法--特定方法和操作符,比如echo\print或者字符串连接符(.)
显示强制类型转换:为变量(或表达式)加上括号括起来的类型前缀,php会试图替你进行转换.
(int)\(interger)
(string)-转换为文本字符串
(object)-转换为对象
2.3.2 特殊强制类型转换
转换为整数
(int)4.999
注:null永远都转换为整数值0.
转换为浮点数
(float)true=1.0
把数组、对象或者资源转换为浮点值的结果是未定义的,不要试图进行这新的转换或者相信这样的转换结果
转换为字符串
可使用类型转换符(string)或调用strval把变量转换为字符串.
布尔型true转为字符串1,false被转换空字符串("")
null转为空字符串('").
转换为数组
可使用类型转换(array)或者函数arraryr把变量或者表达式转换为数组
null和其他未设置的变量被转换为有0个元素的空数组
转换为对象
你可以使用类型转换(object)把变量或者表达式转换为对象。
把对象转换为对象仅仅返回相同对象的句柄。为所有其他类型创建stdClass类型的对象。
2.3.3 有用的强制类型转换函数
is_type()
.is_integer,.is_float,.is_bool,is_null,.is_object.返回布尔型 ,指出特定变量是否属于适当的类型 。
gettype()是非常有用的例程,它告诉你php当前认为变量或者表达式是什么类型。不推荐使用这个转换函数。
settype()使用两个参数:要转换的变量和要转换为的类型 ,它表示字符串。
.4 变量和常量
2.4.1 定义常量
在php程序中,使用语言结构define定义常量,常量名子不以字符$开头,并且它们的值只能是特定类型:整数、浮点数、字符串和布尔型
2.4.2 按值 和按引用的变量
默认情况下,大多数变量和所有常量是按值赋值的。把一个变量的值赋给另一个变量是时,其值被复制。这种方式对于除对象外的所有类型适用
对于对象变量和资源,被复制的全部内容是底层对象或资源的句柄,但是操作的底层对象是相同的。
把变量的值赋值给另一个变量的另一种选择方式是按引用赋值。用&前缀完成的。
$a=123;
$b=&$a;
2.4.3 变量的范围
函数级别的变量,内部声明的变量只在这个函数内部是合法的。
在函数外声明的变量
超级全局变量
2.4.4 变量的生存期
不管执行相同脚本还是不同脚本,php都不会在调用之间记忆任何内容。
2.4.5 预定义变量
php提供很多预定义变量,它们给出操作环境的信息,大多是超级全局数组例如:
$GLOBALS-它包含正在执行的脚本内部全局可用的所有变量的引用
$_SERVER-脚本所在周边环境的信息
$_SESSION、$_COOKIE-它包含管理访问者和关于称为"cookie“的存储方式的信息
$_REQUEST-它包含$_post、$_GET和$_session数组
$_ENV-它包含php语言引擎所在的进程的环境变量.数组的键是环境变量的名称。
$php_errormsg-它保存php语言引擎在执行当前脚本时生成的最新的错误信息.
.5 表达式和操作符
2.5.1 操作符:组合表达式
赋值:
算术操作符
例子 名称 结果
-$a 取反 $a 的负值。
$a + $b 加法 $a 和 $b 的和。
$a - $b 减法 $a 和 $b 的差。
$a * $b 乘法 $a 和 $b 的积。
$a / $b 除法 $a 除以 $b 的商。
$a % $b 取模 $a 除以 $b 的余数。
比较操作符

例子 名称 结果
$a == $b 等于 TRUE,如果 $a 等于 $b。
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进)
$a != $b 不等 TRUE,如果 $a 不等于 $b。
$a <> $b 不等 TRUE,如果 $a 不等于 $b。
$a !== $b 非全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进)
$a < $b 小与 TRUE,如果 $a 严格小于 $b。
$a > $b 大于 TRUE,如果 $a 严格 $b。
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。
逻辑操作符
例子 名称 结果
$a and $b And(逻辑与) TRUE,如果 $a 与 $b 都为 TRUE。
$a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
$a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
$a Not(逻辑非) TRUE,如果 $a 不为 TRUE。
$a&& $b And(逻辑与) TRUE,如果 $a 与 $b 都为 TRUE。
$a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
按位操作符

操作符 名称 结果
$a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
$a|| $b Or(按位或) 将把 $a 或者 $b 中为 1 的位设为 1。
xor ^ $b Xor(按位异或) 将把 $a 和 $b 中不同的位设为 1。
Not $a Not(按位非) 将 $a 中为 0 的位设为 1,反之亦然。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。
字符串操作符
连接操作符. 它对两个字符串进行操作,并且返回把二者连接在一起的单一字符串
数组操作符

例子 名称 结果
$a + $b 联合 $a 和 $b 的联合。
$a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE。
$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE。
$a <> $b 不等 如果 $a 不等于 $b 则为 TRUE。
$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE。
其他操作符
自动递增和自动递减操作符
$a=10;
$b=$a++; b=10 ,a=11;
$c=++$a; c=12,a=12;
$d=$a--; d=12,a=11;
$e=--$a; e=10,a=10;
还有一个称为@a的操作符,它让php忽略特定函数调用的失败。
最后一个操作符-外壳命令执行程序。为了它,需要把命令括在反撇号(`)之间,这样命令就被传递给处壳执行.但这样会产生安全。
2.5.2 组合表达式和操作符的过程

结合方向 运算符 附加信息
非结合 clone new clone 和 new
左 [ array()
非结合 ++ -- 递增/递减运算符
非结合 ~ - (int) (float) (string) (array) (object) (bool) @ 类型
非结合 instanceof 类型
右结合 ! 逻辑操作符
左 * / % 算术运算符
左 + - . 算术运算符和字符串运算符
左 << >> 位运算符
非结合 < <= > >= <> 比较运算符
非结合 == != === !== 比较运算符
左 & 位运算符和引用
左 ^ 位运算符
左 | 位运算符
左 && 逻辑运算符
左 || 逻辑运算符
左 ? : 三元运算符
右 = += -= *= /= .= %= &= |= ^= <<= >>= 赋值运算符
左 and 逻辑运算符
左 xor 逻辑运算符
左 or 逻辑运算符
左 , 多处用到
.6 控制结构
2.6.1 if语句
1. if (expr)
statement
else
2. elseif/else if 2.6.2 switch语句

<?php 
if ($a == 5): 
echo "a equals 5"; 
echo "..."; 
elseif ($a == 6): 
echo "a equals 6"; 
echo "!!!"; 
else: 
echo "a is neither 5 nor 6"; 
endif; 
?>

switch 语句和具有同样表达式的一系列的 IF 语句相似。很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码。

这正是 switch 语句的用途。

<?php 
if ($i == 0) { 
echo "i equals 0"; 
} elseif ($i == 1) { 
echo "i equals 1"; 
} elseif ($i == 2) { 
echo "i equals 2"; 
} 
switch ($i) { 
case 0: 
echo "i equals 0"; 
break; 
case 1: 
echo "i equals 1"; 
break; 
case 2: 
echo "i equals 2"; 
break; 
} 
?>

2.6.3 while/do ....while循环
while(expr)
block
do
block
while (expr);
<?php 
do { 
if ($i < 5) { 
echo "i is not big enough"; 
break; 
} 
$i *= $factor; 
if ($i < $minimum_limit) { 
break; 
} 
echo "i is ok"; 
/* process i */ 
} while(0); 
?>

2.6.4 for 循环
for(expr1;expr2;expr3)
block
expr1:当第一次遇到FOR循环执行它一次。执行完毕后开始循环迭代。
expr2:在每次迭代之前计算它。如为true,就执行代码块。
expr3-在每次迭代之后计算它
<?php 
/* example 1 */ 
for ($i = 1; $i <= 10; $i++) { 
echo $i; 
} 
/* example 2 */ 
for ($i = 1; ; $i++) { 
if ($i > 10) { 
break; 
} 
echo $i; 
} 
/* example 3 */ 
$i = 1; 
for (;;) { 
if ($i > 10) { 
break; 
} 
echo $i; 
$i++; 
} 
/* example 4 */ 
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 
?>

2.6.5 foreach循环:用于特定类型。在5单元中进行更多讲解
2.6.6 中断循环 :break 和continue
PHP 相关文章推荐
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
PHP命名空间定义与用法实例分析
Aug 14 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
Jul 03 #PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 #PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 #PHP
PHP array_multisort()函数的使用札记
Jul 03 #PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 #PHP
PHP include_path设置技巧分享
Jul 03 #PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 #PHP
You might like
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
JObj预览一个JS的框架
2008/03/13 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
移动端web滚动分页的实现方法
2017/05/05 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python os模块介绍
2014/11/30 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
python3中str(字符串)的使用教程
2017/03/23 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
python实现批量修改文件名
2020/03/23 Python
Python环境管理virtualenv&amp;virtualenvwrapper的配置详解
2020/07/01 Python
用python写爬虫简单吗
2020/07/28 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
煤矿班组长的职责
2013/12/25 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
电频谱管理的原则是什么
2022/02/18 无线电
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers