PHP笔记:PHP的运算符与表达式例子
一、运算符的分类
1、按操作数分类
1.!true // 一元运算符
2.$a+$b // 二元运算符
3.true ? 1:0 // 三元运算符
2、按操功能分类
(1)算术运算符
1.+、-、x、/、%(取余)
(2)字符串运算符
1.. // 例如:$a = 'abc'.'efg';
(3)赋值运算符
1.= // 简单赋值
2.+=、-=、X=、/=、%=、.= // 复合赋值
3.++($a++、++$a)、 --($a--、--$a) // 递增递减
4.&($a = 1;$b = &a) // 引用赋值
(4)比较运算符
1.==、 ===(恒等于)、 !=、 !===、 <>(不等于)、 <、 >、 <=、 >=
(5)逻辑运算符
1.// 括号内的比括号外的优先级高
2.&&(and)、 ||(or)、 !(not)、 xor(异或)、
(6)位运算符
1.&(按位与)、 |(按位或)、 ~(按位非)、 ^(按位异或)、 <<(左位移)、 >>(右位移)
二、算术运算符
%取余,常见用法:1)整除运算 2)控制取值范围
实例:判断是否为闰年(四年一闰,百年不闰,四百年再闰)
1.// %会把两边的数转成整型后在整除
2.// %两边不能用小数或负数
3.if ((($year%4 == 0) && ($year%100 != 0)) || $year%400 == 0)
4.echo "闰年";
5.else
6.echo "平年";
三、赋值运算符
01.//先自身加10,然后赋值给自己,等价于 $a=$a+10
02.$a += 10;
03.
04.//前置递增递减,先递增递减再赋值
05.++$a
06.
07.//先赋值,再递增递减
08.$a++
09.
10.//实例
11.$a = 10;
12.$b = $a++
13.$c = --$b
14.结果:a=11 b=9 c=9
四、逻辑运算符
xor异或:相同为假(两个真或两个假=假),不同为真(一真一假=假)
Tips:注意与or区别,or两个真=真
逻辑运算符短路
1.1、&& //一个为假,则后面不作运算,一定为假
2.2、|| //一个为真,则后面不作运算,一定为真
3.
4.fopen ("test.php","r") or die("失败");
Tips:为运算符 & | 没有短路特性
五、位运算符
位操作:将整型转为32位二进制,字符串转为ANSCA码来处理
foreach遍历数组的好是可以不知道数组的长度从而读出数组的key,name出来了,在php的foreach中有两种方法,arr_name as $value 和arr_name as $key => $value了,这个是针对不同维数的数组的哦,下面来一起来看看吧。foreach有两种用法:
一、
foreach(arr_name as $value)
{
statement;
}
解析:arr_name是要遍历的数组名。每次循环,arr_name数组当前元素的值都被赋给$value,而且数组内部下标也要下移一个,也就是说下次循环得到的将是下一个元素
二、
foreach(arr_name as $key => $value)
{
statement;
}
解析:与第一个的不同是,这个除了吧当前元素的值赋给$value外,每次循环当前元素的键值也会被赋给$key , 键值可能是下标或字符串。如row[0]=1中的"0”,row[id]="001"中的"id”.其中0与id都是键值
先来看第一个语句,这个语句比较简单,array_expression指的是一个数组表达式,as $val语句将顺序取得该数组的值并保存到$val变量中,此种方法只能取得数组内的值,而不能取得数组的下标索引值。例如:
代码如下 | 复制代码 |
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); foreach($myArray as $val) { echo $val."<br />"; } 执行结果: val1 val2 val3 |
再来看看第二种格式,第二种格式除了能像第一种格式一样得到数组内元素的值外,还能得到元素的索引值,并保存到$key变量中,如果数组的索引值未经过人工设定,则返回系统默认的设定值。
先看一个简单的一维数组:
代码如下 | 复制代码 |
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); foreach($myArray as $key=>$val) { echo $key."=>".$val."<br />"; } 执行结果: 1=>val1 2=>val2 3=>val3 |
接下来我们再来看一个复杂一点的二维数组遍历,程序如下:
代码如下 | 复制代码 |
$myArray=array( "1"=>array("11"=>"val11","12"=>"val12","13"=>"val13"), "2"=>array("21"=>"val21","22"=>"val22","23"=>"val23"), "3"=>array("31"=>"val31","32"=>"val32","33"=>"val33") ); echo "<ul>"; foreach($myArray as $key=>$val) { echo "<li>".$key."</li>"; //判断$val的值是否是一个数组,如果是,则进入下层遍历 if (is_array($val)) { echo "<ul>"; foreach($val as $key=>$val) { echo "<li>".$key."=>".$val."</li>"; } echo "</ul>"; } } echo "</ul>"; |
执行结果:
<ul> 和 <li>是 标签,作用是显示个实心小圆点和空心小圆点。 由于上面的是一个二维数组,在第一次遍历后所得到的$val值将是一个数组,所以我在遍历中加了一个判断,以便进行二层数组遍历。
再通过一个实例解惑:
代码如下 | 复制代码 |
$a = array("1"=>"语文","2"=>"数学","3"=>"英语"); $b = array("1"=>"95","2"=>"99","3"=>"92"); foreach($a as $key=>$value){ echo $value; echo $b[$key]."<br>"; } 执行结果: 语文95 数学99 英语92 |
问题是为什么输出数组$b中的值要用$b[$key]而不是$b[$value]? why?
代码如下 | 复制代码 |
$a = array("1"=>"语文","2"=>"数学","3"=>"英语"); 上面这个和下面这个是完全一样的 $a[1]="语文"; $a[2]="数学"; $a[3]="英语"; 我们输出上面的数组元素是怎么输出的呢? 肯定是 echo $a[1]; echo $a[2]; echo $a[3]; |
对不对?简单说foreach 它的格式是这样的
foreach(数组名 as 下标=>值)
下标也就是上面的$a[1],这里的1就是数组的下标! 到这你应该明白了,为什么是$a[$key]这样输出。
好了到这里关于php foreach就介绍完了,foreach只能遍历一二维数组了,如果是三维数组我们需要进行递归操作了。
流程控制语句是任何程序中会碰到的一个条件判断语句了,下面本文章重点介绍php中流程控制分支结构基于语法与简单应用例子。一、PHP流程控制概述
1、分支结果(条件结构)
//单路分支:
if (condition) { //花括号后可以没有分号;
# code...
}
//双路分支
if (condition) {
# code...
} else {
# code...
}
//多路分支
if (condition) {
# code...
} elseif(condition) { //elseif 可写成else if
# code...
} else {
# code...
}
2、switch 多路分支结构
判断范围用if结构,单个值用switch
switch (variable) { //变量用整型和字符串
case 'value1':
case 'value2': //可以有多个case
# code...
break; //如果不加break,下一个case会继续执行
case 'value3':
# code...
break;
default: //默认值,可有可无
# code...
break;
}
二、PHP循环语句
1、while 循环
while (condition) { //先判断条件再执行
# code...
}
2、do while 循环
do { //先执行再判断条件
# code...
} while (condition); //注意不要遗漏分号
3、for 循环
for ($i=0; $i < ; $i++) { //一般用于计数,两个分号不能省略
# code...
}
实例:99乘法表
for ($i=1; $i < 10; $i++) {
for ($ii=1; $ii <= $i; $ii++) {
echo "$ii X $i = ".$ii*$i.' ';
}
echo "<br>";
}
三、退出循环语句
//退出本次循环,下次循环也不再进行
break
//退出本次循环,下次循环继续,只能用于循环体内(for,while,do-while)
coninue
//完全退出程序
exit
//函数执行返回值,结束函数的语句
return
退出多层循环
break 1 // 退出当前循环
break 2 // 退出2层循环
continue 2
错误实例
$i = 0;
while ($i < 10){
if ($i == 5)
continue;
echo "$i";
$i++; //注意这里的i++不会被执行,会产生死循环
}
一、函数的声明
1、语法结构
代码如下 | 复制代码 |
function 函数名 (参数列表) |
参数列表用逗号隔开,勿遗漏$变量符号
函数名不区分大小写,规则与变量一致
函数调用才执行,可先调用后声明
函数名不能重名,包括系统函数
2、函数调用
代码如下 | 复制代码 |
function sum($x,$y) //形参:在声明函数时声明的参数 sum(); |
二、函数中的变量
1、变量范围
局部变量:函数内部声明与使用的变量
全局变量:在函数外声明,脚本任何地方均可以使用
Tips:在PHP函数中使用全局变量,要通过global关键字将这个全局变量包含到函数中才能使用
代码如下 | 复制代码 |
$a = 1; demo(); |
2、PHP静态变量
静态变量可以在同一个函数中多次调用中共用
静态变量只能在函数或类中声明,不能在全局声明。
代码如下 | 复制代码 |
function demo($a = '') |
3、变量函数
代码如下 | 复制代码 |
$var = 'hello'; //变量名后面右括号,就寻找与变量值同名的函数 |
三、函数分类及声明
1、函数分类
代码如下 | 复制代码 |
//常规函数 //带mixed,表示可以传任何类型的数据 //带&参数的函数,这个参数只能是变量,变量值是动态的 //默认函数,即带[]中括号的函数,表示参数可选,若没有传值则使用默认值 //带有...参数的函数,表示可以传任意多个参数 |
2、声明多个参数函数
代码如下 | 复制代码 |
function Test() func_get_arg():返回参数列表中的第N个参数 function Test() |
使用实例
代码如下 | 复制代码 |
function cls_mysql() |
3、函数注释规范
代码如下 | 复制代码 |
/** * 用用演示函数 //函数功能,决定是否使用 * * @static * @access public * @param string $attributeName 属性名称 //函数参数,决定怎样调用 * @return string //函数的返回值,决定调用后怎么处理 */ public function demo($attributeName) { $attributeName = 'abc'; return $attributeName } |
四、Callback 回调函数
我们自定义一个函数A,但是我们不直接去调函数A,而是在函数B中去调用函数A,函数B通过接收函数A的名字和参数来实现对函数A的调用,函数A称为回调函数。
代码如下 | 复制代码 |
function A($x,$y) |
PHP回调函数的实现方法
php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持
代码如下 | 复制代码 |
//mixed call_user_func_array 以数组的形式接收回调函数的参数 //call_user_func的参数个数根据回调函数的参数来确定 |
实例:
代码如下 | 复制代码 |
//普通全局函数 echo "通过call_user_func_array调用函数f1:<br>"; echo "通过call_user_func调用函数f1:<br>"; //类 echo "调用类中非静态成员函数,该成员函数中有this调用了对象中的成员:<br>"; echo "调用类中非静态成员函数,该函数没有调用对象中的成员,没有this:<br>"; echo "调用类中静态成员函数:<br>"; |
五、内部函数
在函数内部再声明函数,目的是在函数内部调用,用来帮助外部函数完成一些子功能
字符串是php中非常重要的一个知识点了,从另一个层面来讲php就是对字符串的一些操作了,所以php对于字符串操作的函数也是提供的相当的多了,下面我整理一些字符串函数使用例子。PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用。PHP判断字符串的包含,可以使用PHP的内置函数strstr,strpos,stristr直接进行判断.也可以通过explode函数的作用写一个判断函数。
探讨如何实现PHP判断字符串是否为IP
深入探讨PHP自动获取关键词的具体方法
PHP字符串函数的分类总结
分享PHP函数require()的具体使用技巧
PHP重定向网页的具体实现方法介绍
下面介绍PHP判断字符串的包含的具体使用方法:
1. strstr: 返回一个从被判断字符开始到结束的字符串,如果没有返回值,则不包含
代码如下:
代码如下 | 复制代码 |
< ?php /*如手册上的举例*/ $email = 'user@example.com'; $domain = strstr($email, '@'); echo $domain; // prints @example.com ?> |
2. stristr: 它和strstr的使用方法完全一样.唯一的区别是stristr不区分大小写.
3. strpos: 返回boolean值.FALSE和TRUE不用多说.用 “===”进行判断.strpos在执行速度上都比以上两个函数快,另外strpos有一个参数指定判断的位置,但是默认为空.意思是判断整个字符串.缺点是对中文的支持不好.
PHP判断字符串的包含代码如下:
代码如下 | 复制代码 |
$str= ‘abc’; $needle= ‘a’; $pos = strpos($str, $needle); |
4. 用explode进行判断
PHP判断字符串的包含代码如下:
代码如下 | 复制代码 |
function checkstr($str){ $needle = “a”;//判断是否包含a这个字符 $tmparray = explode($needle,$str); if(count($tmparray)>1){ return true; } else{ return false; } } |
以上就是PHP判断字符串的包含的具体代码示例。
去除字符串首尾处的空白字符或者任意字符 - trim - 返回去掉后的字符串
代码如下 | 复制代码 |
/* 格式:trim(字符串,'要去掉的特殊字符可以是多个') */ $str=trim(' admin '); echo $str; // admin 两边无空格 echo $str=trim(' admin ********','* '); // admin echo strlen($str); // 5 通过长度得知字符有没有被去掉 |
去除字符串右侧的空白字符或者任意字符 - rtrim - 返回去掉后的字符串
代码如下 | 复制代码 |
/* 格式:rtrim(字符串,'要去掉的特殊字符可以是多个') */ $str=rtrim(' admin '); echo $str; //' admin' 右侧无空格 echo $str=rtrim(' admin ********','* '); // admin echo strlen($str); // 10 通过长度得知字符有没有被去掉 |
去除字符串右侧的空白字符或者任意字符 - chop - chop是rtrim的别名
代码如下 | 复制代码 |
/* 格式:chop(字符串,'要去掉的特殊字符可以是多个') */ $str=chop(' admin '); echo $str; //' admin' 右侧无空格 echo $str=chop(' admin ********','* '); // admin echo strlen($str); // 10 通过长度得知字符有没有被去掉 |
去除字符串左侧的空白字符或者任意字符 - ltrim - 返回去掉后的字符串
代码如下 | 复制代码 |
/* 格式:ltrim(字符串,'要去掉的特殊字符可以是多个') */ $str=rtrim(' admin '); echo $str; //' admin' 右侧无空格 echo $str=ltrim(' admin ********','* '); // 'admin ********' echo strlen($str); // 14 通过长度得知字符有没有被去掉 |
相关文章
- 取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
- 正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
- 常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
- 网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
- 这篇文章介绍了c#的异或运算符,有需要的朋友可以参考一下...2020-06-25
- 轻松学习C#的运算符,对C#的运算符感兴趣的朋友可以参考本篇文章,帮助大家更灵活的运用C#的运算符。...2020-06-25
- 这只我自己在学C#中的一些总结,其中对于各级的划分方式、各操作符的优先级的理解并不见得正确,只是自己的看法,拿出来与大家分享...2020-06-25
- 我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
- 1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
- 这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
- 这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
- 在本篇文章里小编给大家分享了一篇关于R语言运算符知识点讲解内容,有兴趣的朋友们可以参考下。...2021-05-06
- c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
- 这篇文章主要介绍了C++中的或||、与&&、非!逻辑运算符基本用法整理,是C++入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
- 本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
- 这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25