当前位置: 编程技术>php
本页文章导读:
▪php学习笔记(三)操作符与控制结构
一.字符串插入 为了给开发人员处理字符串值提供最大的灵活性,PHP 为字面插入和内容插入提供了 一种方法。 双引号提供了最大的灵活性,原因是变量和转移序列都会得到相应的解析。 .........
▪PHP几个数学计算的内部函数学习整理
round round - 对浮点数进行四舍五入。round 函数语法如下: round(float,precision) 其中参数 precision 表示小数点后面要保持的精度位数。如果不写参数 precision,表示四舍五入到整数位,比如: echo r.........
▪PHP缓存技术的使用说明
在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备 SQL查询->发送查询到数据库->取得数据库返回结.........
[1]php学习笔记(三)操作符与控制结构
来源: 互联网 发布时间: 2013-11-30
一.字符串插入
为了给开发人员处理字符串值提供最大的灵活性,PHP 为字面插入和内容插入提供了
一种方法。
双引号提供了最大的灵活性,原因是变量和转移序列都会得到相应的解析。
<?php
$userName = "张三";
echo "His name is $userName ";
echo "<br />";
//中文会出现一些问题
echo "他的名字叫$userName ,他19岁了,已经长大成人了!";
echo "<br />";
//可以采用字符串连接的方式解决
echo "他的名字叫".$userName.",他19岁了,已经长大成人了!"
//转义字符可以得到解析
echo "虽然他的QQ号有很多女生,\n但一个都不属于他";
?>
部分常用的转义字符
转义序列描述
\n 换行符
\r 回车
\t 水平制表图
\\ 反斜杠
\$ 美元符
\" 双引号
单引号会按照声明的原样解释,解析字符串时,变量和转义序列都不会进行解析。
<?php
echo '吴祁的变量名为:$userName,转义字符\n在单引号中无效'
?>
二.操作符
操作符是用来对数组和变量进行某种操作运算的符号。
算术操作符
复合赋值操作符
前置递增递减和后置递增递减运算符:
$a=++$b;
$a=$b++;
$a=--$b;
$a=$b--;
比较运算符
操作符名称示例
+ 加$a+$b
- 减$a-$b
* 乘$a*$b
/ 除$a/$b
% 取余$a%$b
操作符使用方法等价于
+= $a+=$b $a=$a+$b
-= $a-=$b $a=$a-$b
*= $a*=$b $a=$a*$b
/= $a/=$b $a=$a/$b
%= $a%=$b $a=$a%$b
.= $a.=$b $a=$a.$b
操作符名称使用方法
= = 等于$a= =$b
= = = 恒等$a= = =$b
!= 不等$a!=$b
!= = 不恒等$a!= =$b
<> 不等$a<>$b
< 小于$a<$b
> 大于$a>$b
<= 小于等于$a<=$b
>= 大于等于$a>=$b
注:恒等表示只有两边操作数相等并且数据类型也相当才返回true;
例如:0= ="0" 这个返回为true ,因为操作数相等
0= = ="0" 这个返回为false,因为数据类型不同
逻辑运算符
! 非!$b
如果$b 是false, 则
返回true;否则相反
&& 与$a&&$b
如果$a 和$b 都是
true,则结果为true;
否则为false
|| 或$a||$b
如果$a 和$b 中有一
个为true 或者都为
true 时,其结果为
true;否则为false
and 与$a and $b
与&&相同,但其优
先级较低
or 或$a or $b
与||相同,但其优先
级较低
操作符"and"和"or"比&&和||的优先级要低。
三元操作符
Condition ? value if true : value if false
示例:($grade>=50 ? "Passed" : "Failed")
错误抑制操作符:
$a=@(57/0);
除数不能为0,会出错,所以加上@避免出现错误警告。
数组操作符
+ 联合!$b
返回一个包含了
$a 和$b 中所有元
素的数组
= = 等价$a&&$b
如果$a 和$b 具有
相同的元素,返回
true
= = = 恒等$a||$b
如果$a 和$b 具有
相同的元素以及
相同的顺序,返回
true
!= 非等价$a and $b
如果$a 和$b 不是
等价的,返回true
<> 非等价
如果$a 和$b 不是
等价的,返回true
!= = 非恒等$a or $b
如果$a 和$b 不是
恒等的,返回true
操作符的优先级和结合性:
一般地说,操作符具有一组优先级,也就是执行他们的顺序。
操作符还具有结合性,也就是同一优先级的操作符的执行顺序。这种顺序通常有从
左到右,从右到左或者不相关。
下面给出操作符优先级的表。最上面的操作符优先级最低,按着表的由上而下的顺
序,优先级递增。
操作符优先级
左,
左Or
左Xor
左And
右Print
左
= += -= *= /= .= %= &= |= ^= ~= <<=
>>=
左?:
左||
左&&
左|
左^
左&
不相关= = != = = = = != =
不相关<<= >>=
左<< >>
左+ - .
左* / %
右
! ~ ++ --
(int)(double)(string)(array)(object) @
右[]
不相关New
不相关()
为了避免优先级混乱,可以使用括号避开优先级。
三.控制结构
如果我们希望有效地相应用户的输入,代码就需要具有判断能力。能够让程序进行判断
的结构称为条件。
if
条件判断语句
if (条件判断){
//......
}
if (条件判断){
//....
}
else {
//....
}
if (条件判断) {
//...
}
左||
左&&
左|
左^
左&
不相关= = != = = = = != =
不相关<<= >>=
左<< >>
左+ - .
左* / %
右
! ~ ++ --
(int)(double)(string)(array)(object) @
右[]
不相关New
不相关
elseif {
//...
}
elseif {
//....
}
else {
//....
}
switch
语句
switch (变量) {
case "值1":
//...
break;
case "值2":
//...
break;
case "值N":
//...
break;
default:
//....
break;
}
while
循环
while (条件) {
//....
}
for
循环
for (初始值;条件;计数器) {
//....
}
除了for 循环外,PHP 还提供了foreach 循环,它专门用于数组的使用。我们在数
组中详细介绍它。
do
while
循环
do {
//...
} while(条件);
如果希望停止一段代码的执行,根据所需要达到的效果不同,可以有3 中方法实现。
第一种:break; 退出循环; 第二种是exit ;退出程序第三种是continue;退出当前循
环
if (条件)
{
break; //continue
}
为了给开发人员处理字符串值提供最大的灵活性,PHP 为字面插入和内容插入提供了
一种方法。
双引号提供了最大的灵活性,原因是变量和转移序列都会得到相应的解析。
代码如下:
<?php
$userName = "张三";
echo "His name is $userName ";
echo "<br />";
//中文会出现一些问题
echo "他的名字叫$userName ,他19岁了,已经长大成人了!";
echo "<br />";
//可以采用字符串连接的方式解决
echo "他的名字叫".$userName.",他19岁了,已经长大成人了!"
//转义字符可以得到解析
echo "虽然他的QQ号有很多女生,\n但一个都不属于他";
?>
部分常用的转义字符
转义序列描述
\n 换行符
\r 回车
\t 水平制表图
\\ 反斜杠
\$ 美元符
\" 双引号
单引号会按照声明的原样解释,解析字符串时,变量和转义序列都不会进行解析。
<?php
echo '吴祁的变量名为:$userName,转义字符\n在单引号中无效'
?>
二.操作符
操作符是用来对数组和变量进行某种操作运算的符号。
算术操作符
复合赋值操作符
前置递增递减和后置递增递减运算符:
$a=++$b;
$a=$b++;
$a=--$b;
$a=$b--;
比较运算符
操作符名称示例
+ 加$a+$b
- 减$a-$b
* 乘$a*$b
/ 除$a/$b
% 取余$a%$b
操作符使用方法等价于
+= $a+=$b $a=$a+$b
-= $a-=$b $a=$a-$b
*= $a*=$b $a=$a*$b
/= $a/=$b $a=$a/$b
%= $a%=$b $a=$a%$b
.= $a.=$b $a=$a.$b
操作符名称使用方法
= = 等于$a= =$b
= = = 恒等$a= = =$b
!= 不等$a!=$b
!= = 不恒等$a!= =$b
<> 不等$a<>$b
< 小于$a<$b
> 大于$a>$b
<= 小于等于$a<=$b
>= 大于等于$a>=$b
注:恒等表示只有两边操作数相等并且数据类型也相当才返回true;
例如:0= ="0" 这个返回为true ,因为操作数相等
0= = ="0" 这个返回为false,因为数据类型不同
逻辑运算符
! 非!$b
如果$b 是false, 则
返回true;否则相反
&& 与$a&&$b
如果$a 和$b 都是
true,则结果为true;
否则为false
|| 或$a||$b
如果$a 和$b 中有一
个为true 或者都为
true 时,其结果为
true;否则为false
and 与$a and $b
与&&相同,但其优
先级较低
or 或$a or $b
与||相同,但其优先
级较低
操作符"and"和"or"比&&和||的优先级要低。
三元操作符
Condition ? value if true : value if false
示例:($grade>=50 ? "Passed" : "Failed")
错误抑制操作符:
$a=@(57/0);
除数不能为0,会出错,所以加上@避免出现错误警告。
数组操作符
+ 联合!$b
返回一个包含了
$a 和$b 中所有元
素的数组
= = 等价$a&&$b
如果$a 和$b 具有
相同的元素,返回
true
= = = 恒等$a||$b
如果$a 和$b 具有
相同的元素以及
相同的顺序,返回
true
!= 非等价$a and $b
如果$a 和$b 不是
等价的,返回true
<> 非等价
如果$a 和$b 不是
等价的,返回true
!= = 非恒等$a or $b
如果$a 和$b 不是
恒等的,返回true
操作符的优先级和结合性:
一般地说,操作符具有一组优先级,也就是执行他们的顺序。
操作符还具有结合性,也就是同一优先级的操作符的执行顺序。这种顺序通常有从
左到右,从右到左或者不相关。
下面给出操作符优先级的表。最上面的操作符优先级最低,按着表的由上而下的顺
序,优先级递增。
操作符优先级
左,
左Or
左Xor
左And
右Print
左
= += -= *= /= .= %= &= |= ^= ~= <<=
>>=
左?:
左||
左&&
左|
左^
左&
不相关= = != = = = = != =
不相关<<= >>=
左<< >>
左+ - .
左* / %
右
! ~ ++ --
(int)(double)(string)(array)(object) @
右[]
不相关New
不相关()
为了避免优先级混乱,可以使用括号避开优先级。
三.控制结构
如果我们希望有效地相应用户的输入,代码就需要具有判断能力。能够让程序进行判断
的结构称为条件。
if
条件判断语句
if (条件判断){
//......
}
if (条件判断){
//....
}
else {
//....
}
if (条件判断) {
//...
}
左||
左&&
左|
左^
左&
不相关= = != = = = = != =
不相关<<= >>=
左<< >>
左+ - .
左* / %
右
! ~ ++ --
(int)(double)(string)(array)(object) @
右[]
不相关New
不相关
elseif {
//...
}
elseif {
//....
}
else {
//....
}
switch
语句
switch (变量) {
case "值1":
//...
break;
case "值2":
//...
break;
case "值N":
//...
break;
default:
//....
break;
}
while
循环
while (条件) {
//....
}
for
循环
for (初始值;条件;计数器) {
//....
}
除了for 循环外,PHP 还提供了foreach 循环,它专门用于数组的使用。我们在数
组中详细介绍它。
do
while
循环
do {
//...
} while(条件);
如果希望停止一段代码的执行,根据所需要达到的效果不同,可以有3 中方法实现。
第一种:break; 退出循环; 第二种是exit ;退出程序第三种是continue;退出当前循
环
if (条件)
{
break; //continue
}
[2]PHP几个数学计算的内部函数学习整理
来源: 互联网 发布时间: 2013-11-30
round
round - 对浮点数进行四舍五入。round 函数语法如下:
round(float,precision)
其中参数 precision 表示小数点后面要保持的精度位数。如果不写参数 precision,表示四舍五入到整数位,比如:
echo round(3.4); // 3echo round(3.5); // 4echo round(3.6); // 4
如果 precision 为2,表示四舍五入到小数点后2位。示例如下:
echo round(1.95583, 2); // 1.96
如果参数 precision 为负数,表示四舍五入到小数点前。比如:
echo round(1241757, -3); // 1242000
floor
floor - 舍去法求整。floor 函数语法如下:
floor (value)
floor 函数返回不大于 value 的最大整数,即将 value 的小数部分舍去取整。示例如下:
echo floor(4); //4
echo floor(4.3); // 4echo floor(9.999); // 9
ceil
ceil - 进一法取整。ceil 函数语法如下:
ceil (value)
ceil 函数返回不小于 value 的最小整数。示例如下:
echo ceil(4); //4
echo ceil(4.3); // 5echo ceil(9.999); // 10
pow
pow - 求幂。pow 函数的语法如下:
pow (base,exp)
pow 函数返回 base 的 exp 次方的幂。下面的示例表示求 2 的8 次方,返回结果是256。
echo pow(2, 8); // 256
rand
rand - 产生一个随机整数。rand 函数语法如下:
rand (min,max)
rand 函数返回一个介于最小值 min 和最大值 max 之间 (包括min, max) 的随机整数。比如下面示例返回一个 2 到 6 之间的随机整数。
echo rand(2,6);
max
max - 返回参数中数值最大的值。
如果 max 函数只有一个参数且为数组,max 返回该数组中最大的值。
max 函数示例如下:
echo max(1, 3, 5, 6, 7); // 7echo max(array(2, 4, 5)); // 5
min
min - 返回参数中的最小值。
如果 min 函数只有一个参数且为数组,min 返回该数组中最小的值。
min 函数示例如下:
echo min(1, 3, 5, 6, 7); // 1echo min(array(2, 4, 5)); // 2
decbin
decbin - 十进制转换为二进制。decbin 函数语法如下:
decbin (number)
decbin 返回一个字符串,即返回参数 number 的二进制表示。示例如下:
echo decbin(12);
DE>decbin(12)DE> 返回的结果是:
1100
bindec
bindec - 二进制转换成十进制。bindec 函数语法如下:
bindec (binary_string)
bindec 函数将二进制字符串 binary_string 转换成一个十进制整数。示例如下:
echo bindec('110011'); //51
dechex, hexdec
dechex - 十进制转换为十六进制。
hexdec - 十六进制转换为十进制。
dechex, hexdec 函数示例如下:
echo dechex(47); //2f
echo hexdec('2f'); //47
decoct, octdec
decoct - 十进制转换为八进制
octdec - 八进制转换为十进制
decoct,octdec 函数示例如下:
echo decoct(12); //14
echo octdec('14'); //12
round - 对浮点数进行四舍五入。round 函数语法如下:
round(float,precision)
其中参数 precision 表示小数点后面要保持的精度位数。如果不写参数 precision,表示四舍五入到整数位,比如:
echo round(3.4); // 3echo round(3.5); // 4echo round(3.6); // 4
如果 precision 为2,表示四舍五入到小数点后2位。示例如下:
echo round(1.95583, 2); // 1.96
如果参数 precision 为负数,表示四舍五入到小数点前。比如:
echo round(1241757, -3); // 1242000
floor
floor - 舍去法求整。floor 函数语法如下:
floor (value)
floor 函数返回不大于 value 的最大整数,即将 value 的小数部分舍去取整。示例如下:
echo floor(4); //4
echo floor(4.3); // 4echo floor(9.999); // 9
ceil
ceil - 进一法取整。ceil 函数语法如下:
ceil (value)
ceil 函数返回不小于 value 的最小整数。示例如下:
echo ceil(4); //4
echo ceil(4.3); // 5echo ceil(9.999); // 10
pow
pow - 求幂。pow 函数的语法如下:
pow (base,exp)
pow 函数返回 base 的 exp 次方的幂。下面的示例表示求 2 的8 次方,返回结果是256。
echo pow(2, 8); // 256
rand
rand - 产生一个随机整数。rand 函数语法如下:
rand (min,max)
rand 函数返回一个介于最小值 min 和最大值 max 之间 (包括min, max) 的随机整数。比如下面示例返回一个 2 到 6 之间的随机整数。
echo rand(2,6);
max
max - 返回参数中数值最大的值。
如果 max 函数只有一个参数且为数组,max 返回该数组中最大的值。
max 函数示例如下:
echo max(1, 3, 5, 6, 7); // 7echo max(array(2, 4, 5)); // 5
min
min - 返回参数中的最小值。
如果 min 函数只有一个参数且为数组,min 返回该数组中最小的值。
min 函数示例如下:
echo min(1, 3, 5, 6, 7); // 1echo min(array(2, 4, 5)); // 2
decbin
decbin - 十进制转换为二进制。decbin 函数语法如下:
decbin (number)
decbin 返回一个字符串,即返回参数 number 的二进制表示。示例如下:
echo decbin(12);
DE>decbin(12)DE> 返回的结果是:
1100
bindec
bindec - 二进制转换成十进制。bindec 函数语法如下:
bindec (binary_string)
bindec 函数将二进制字符串 binary_string 转换成一个十进制整数。示例如下:
echo bindec('110011'); //51
dechex, hexdec
dechex - 十进制转换为十六进制。
hexdec - 十六进制转换为十进制。
dechex, hexdec 函数示例如下:
echo dechex(47); //2f
echo hexdec('2f'); //47
decoct, octdec
decoct - 十进制转换为八进制
octdec - 八进制转换为十进制
decoct,octdec 函数示例如下:
echo decoct(12); //14
echo octdec('14'); //12
[3]PHP缓存技术的使用说明
来源: 互联网 发布时间: 2013-11-30
在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备 SQL查询->发送查询到数据库->取得数据库返回结果->关闭数据库连接。但数据库中有些数据是完全静态的或不太经常变动的,缓存系统会通过把SQL查询的结果缓存到一个更快的存储系统中存储,从而避免频繁操作数据库而很大程度上提高了程序执行时间,而且缓存查询结果也允许你后期处理。
普遍使用的PHP缓存技术
PHP缓存技术之数据缓存:
这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存文件中获得。
PHP缓存技术之页面缓存:
每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)
PHP缓存技术之内存缓存:
在里就不介绍了,不是本文所要讨论的,只简单提一下:
Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
dbcached 是一款基于 Memcached 和 NMDB 的分布式 key-value 数据库内存缓存系统。
以上的缓存技术虽然能很好的解决频繁查询数据库的问题,但其缺点在在于数据无时效性,下面我给出我在项目中常用的方法:
PHP缓存技术之时间触发缓存:
检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。
设定时间内不去判断数据是否要更新,过了设定时间再更新缓存。以上只适合对时效性要求不高的情况下使用,否则请看下面。
PHP缓存技术之内容触发缓存:
当插入数据或更新数据时,强制更新缓存。
在这里我们可以看到,当有大量数据频繁需要更新时,最后都要涉及磁盘读写操作。怎么解决呢?我在日常项目中,通常并不缓存所有内容,而是缓存一部分不经常变的内容来解决。但在大负荷的情况下,最好要用共享内存做缓存系统。
到这里PHP缓存也许有点解决方案了,但其缺点是,因为每次请求仍然要经过PHP解析,在大负荷的情况下效率问题还是比效严重,在这种情况下,也许会用到静态缓存。
PHP缓存技术之静态缓存
这里所说的静态缓存是指HTML缓存,HTML缓存一般是无需判断数据是否要更新的,因为通常在使用HTML的场合一般是不经常变动内容的页面。数据更新的时候把HTML也强制更新一下就可以了。
普遍使用的PHP缓存技术
PHP缓存技术之数据缓存:
这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存文件中获得。
PHP缓存技术之页面缓存:
每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)
PHP缓存技术之内存缓存:
在里就不介绍了,不是本文所要讨论的,只简单提一下:
Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
dbcached 是一款基于 Memcached 和 NMDB 的分布式 key-value 数据库内存缓存系统。
以上的缓存技术虽然能很好的解决频繁查询数据库的问题,但其缺点在在于数据无时效性,下面我给出我在项目中常用的方法:
PHP缓存技术之时间触发缓存:
检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。
设定时间内不去判断数据是否要更新,过了设定时间再更新缓存。以上只适合对时效性要求不高的情况下使用,否则请看下面。
PHP缓存技术之内容触发缓存:
当插入数据或更新数据时,强制更新缓存。
在这里我们可以看到,当有大量数据频繁需要更新时,最后都要涉及磁盘读写操作。怎么解决呢?我在日常项目中,通常并不缓存所有内容,而是缓存一部分不经常变的内容来解决。但在大负荷的情况下,最好要用共享内存做缓存系统。
到这里PHP缓存也许有点解决方案了,但其缺点是,因为每次请求仍然要经过PHP解析,在大负荷的情况下效率问题还是比效严重,在这种情况下,也许会用到静态缓存。
PHP缓存技术之静态缓存
这里所说的静态缓存是指HTML缓存,HTML缓存一般是无需判断数据是否要更新的,因为通常在使用HTML的场合一般是不经常变动内容的页面。数据更新的时候把HTML也强制更新一下就可以了。
最新技术文章: