PHP笔记5:PHP流程控制分支结构

 更新时间:2016年11月25日 14:57  点击:1597
流程控制语句是任何程序中会碰到的一个条件判断语句了,下面本文章重点介绍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++不会被执行,会产生死循环
}

下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码来处理

函数是一门程序中不可少的一个重要的东西,很多东西我们会做成函数这样可以方便重复调用了,下面本文章重点就是介绍函数php函数用法。

一、函数的声明
1、语法结构

 代码如下 复制代码

function 函数名 (参数列表)
{
    函数体; //可选
    返回值; //return可选
}

    参数列表用逗号隔开,勿遗漏$变量符号
    函数名不区分大小写,规则与变量一致
    函数调用才执行,可先调用后声明
    函数名不能重名,包括系统函数

2、函数调用

 代码如下 复制代码

function sum($x,$y) //形参:在声明函数时声明的参数
{
    // $x = 1; //如果在函数内对参数赋值,则会覆盖实参。
    // $y = 2;
    $sum = 0;
    $sum = $x + $y;
    return $sum; //执行到return函数结束,后面不再执行
}

sum();
sum(2,2); //实参:在调用函数时传递给形参的数值
echo sum(2,2); //通过return返回数据可作为值使用


二、函数中的变量
1、变量范围

    局部变量:函数内部声明与使用的变量
    全局变量:在函数外声明,脚本任何地方均可以使用

Tips:在PHP函数中使用全局变量,要通过global关键字将这个全局变量包含到函数中才能使用

 代码如下 复制代码

$a = 1;
$b = 2;
function demo($a = '')
{
    //global 须放在前面
    //global $a,$b global 可包含多个全局变量
    //$GLOBALS['a'] //声明全局变量 方法二
    global $a;
    $a += 5;
    echo $a;
}

demo();


2、PHP静态变量

    静态变量可以在同一个函数中多次调用中共用
    静态变量只能在函数或类中声明,不能在全局声明。

 代码如下 复制代码

function demo($a = '')
{
    static $a = 0; //定义静态变量
    $a++;
    echo "$a <br>";
}
demo(); //输出1
demo(); //输出2


3、变量函数

 代码如下 复制代码

$var = 'hello'; //变量名后面右括号,就寻找与变量值同名的函数
$var(); //等价于 hello();


三、函数分类及声明

1、函数分类

 代码如下 复制代码

//常规函数
bool copy(string source,string dest)

//带mixed,表示可以传任何类型的数据
bool chown(string filename,mixed user)

//带&参数的函数,这个参数只能是变量,变量值是动态的
//对数组进行排序,数组的索引保持和单元的关联
bool arsort ( array &$array [, int $sort_flags ] )
$fruits = array('a', 'c', 'b');
arsort($fruits);
var_dump($fruits);

//默认函数,即带[]中括号的函数,表示参数可选,若没有传值则使用默认值
//如果调用没有赋值,又没有初值则出现警告
function demo($a=1,$b=2)
{
    #code
}
demo();

//带有...参数的函数,表示可以传任意多个参数
//在数组开头插入一个或多个单元
int array_unshift ( array &$array , mixed $var [, mixed $... ] )

2、声明多个参数函数

 代码如下 复制代码

function Test()
{
    echo func_num_args();
}
Test('a','b','c');  // 3

func_get_arg():返回参数列表中的第N个参数

function Test()
{
    echo func_get_arg('1');
}
Test('a','b','c'); //b

使用实例

 代码如下 复制代码

function cls_mysql()
{
    $mysql = func_get_args();
    $conn = mysql_connect($mysql['0'], $mysql['1'], $mysql['2']);
}
cls_mysql('localhost:3306', 'root', '123456');

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)
{
    return $x*$y;
}
function B($a,$b,$fun)
{
    return $a+$b+$fun($a,$b);
}
echo B(2,3,"A");


PHP回调函数的实现方法

php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持

 代码如下 复制代码

//mixed call_user_func_array 以数组的形式接收回调函数的参数
mixed call_user_func_array ( callable $callback , array $param_arr )
call_user_func_array('f1',array('A','B'));

//call_user_func的参数个数根据回调函数的参数来确定
mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
call_user_func_array('f1','A','B');


实例:

 代码如下 复制代码

//普通全局函数
function f1($arg1,$arg2)
{
    echo $arg1."<br>".$arg2."<br>";
}

echo "通过call_user_func_array调用函数f1:<br>";
call_user_func_array('f1',array('A','B'));

echo "通过call_user_func调用函数f1:<br>";
call_user_func('f1','C','D');

//类
class myClass
{
    public $name;
    function show($arg1)
    {
        echo '参数名:'.$arg1."<br>";
        echo '对象中的成员名:'.$this->name;
        echo "<br>";
    }
    function show1($arg1,$arg2)
    { 
        echo $arg1."<br>".$arg2."<br>";
    }
    public static function show2($arg1,$arg2) 
    {
        echo $arg1."<br>".$arg2."<br>";
    }
}

echo "调用类中非静态成员函数,该成员函数中有this调用了对象中的成员:<br>";
$a = new myClass;
$a->name = 'F';
call_user_func_array(array($a,'show'),array('E'));

echo "调用类中非静态成员函数,该函数没有调用对象中的成员,没有this:<br>";
call_user_func_array(array('myClass','show1'),array('G','H'));

echo "调用类中静态成员函数:<br>";
call_user_func_array(array('myClass','show2'),array('I','J'));

五、内部函数

在函数内部再声明函数,目的是在函数内部调用,用来帮助外部函数完成一些子功能

字符串是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 通过长度得知字符有没有被去掉 

              
下面来看一个关于php把excel数值格式转成日期格式问题,因为自己在做一个转换时碰到问题,后来网上找到解决办法与原因下面一起看看。

在excel中:40847对应2011-10-31,是日期的数值型表现形式。

在PHP中,echo date('Y-m-d H:i:s',40847);//结果1970-01-01 11:52:30

原因:

PHP 的时间函数是从1970-1-1日开始计算的,单位是秒数。但是 EXCEL的是从1900-1-1日开始算的单位是天数。

如果只计算1970以后的时间的话,就好处理了。

先获得 EXCEL中 1970-1-1 代表的数字,我查了是25569。

现在要把excel中的40947,在php中用函数正确的显示出来

代码如下:
<?php
  $time = (40847 – 25569) * 24*60*60; //获得秒数
  echo date('Y-m-d H:i:s', $time);   //出来 2011-10-31
?>

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • Smarty模板学习笔记之Smarty简介

    1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • php Observer观察者模式之学习笔记

    当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
  • thinkPHP中多维数组的遍历方法

    这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • php构造方法中析构方法在继承中的表现

    这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15
  • jQuery+PHP+MySQL实现无限级联下拉框效果

    这篇文章主要介绍了jQuery+PHP+MySQL实现无限级联效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-02-21