php if elseif 条件判断语句使用方法

 更新时间:2016年11月25日 15:09  点击:1913

任何 php教程 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,甚至一个什么也不做的(空语句)条件语句。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。本章讲述了各种语句类型。

if
if 结构是很多语言包括 php 在内最重要的特性之一,它允许按照条件执行代码片段。php 的 if 结构和 c 语言相似:


if (expr)
    statement


 

 

如同在表达式一章中定义的,expr 按照布尔求值。如果 expr 的值为 true,php 将执行 statement,如果值为 false - 将忽略 statement。有关哪些值被视为 false 的更多信息参见“转换为布尔值”一节。

如果 $a 大于 $b,则以下例子将显示 a is bigger than b:


<?php
if ($a > $b)
   print "a is bigger than b";
?> 

经常需要按照条件执行不止一条语句,当然并不需要给每条语句都加上一个 if 子句。可以将这些语句放入语句组中。例如,如果 $a 大于 $b,以下代码将显示 a is bigger than b 并且将 $a 的值赋给 $b:

 

<?php
if ($a > $b) {
   print "a is bigger than b";
   $b = $a;
}
?> 

 

if 语句可以无限层地嵌套在其它 if 语句中,这给程序的不同部分的条件执行提供了充分的弹性。


else
经常需要在满足某个条件时执行一条语句,而在不满足该条件时执行其它语句,这正是 else 的功能。else 延伸了 if 语句,可以在 if 语句中的表达式的值为 false 时执行语句。例如以下代码在 $a 大于 $b 时显示 a is bigger than b,反之则显示 a is not bigger than b:


<?php
if ($a > $b) {
   print "a is bigger than b";
} else {
   print "a is not bigger than b";
}
?> 


else 语句仅在 if 以及 elseif(如果有的话)语句中的表达式的值为 false 时执行(参见 elseif)。

 

elseif
elseif,和此名称暗示的一样,是 if 和 else 的组合。和 else 一样,它延伸了 if 语句,可以在原来的 if 表达式值为 false 时执行不同语句。但是和 else 不一样的是,它仅在 elseif 的条件表达式值为 true 时执行语句。例如以下代码将根据条件分别显示 a is bigger than b,a equal to b 或者 a is smaller than b:

 

<?php
if ($a > $b) {
   print "a is bigger than b";
} elseif ($a == $b) {
   print "a is equal to b";
} else {
   print "a is smaller than b";
}
?> 

 

在同一个 if 结构中可以有多个 elseif 语句。第一个表达式值为 true 的 elseif 语句(如果有的话)将会执行。在 php 中,也可以写成“else if”(两个单词),它和“elseif”(一个单词)的行为完全一样。句法分析的含义有少许区别(如果你熟悉 c 语言的话,这是同样的行为),但是底线是两者会产生完全一样的行为。

elseif 的语句仅在之前的 if 或 elseif 的表达式值为 false,而当前的 elseif 表达式值为 true 时执行。


else
经常需要在满足某个条件时执行一条语句,而在不满足该条件时执行其它语句,这正是 else 的功能。else 延伸了 if 语句,可以在 if 语句中的表达式的值为 false 时执行语句。例如以下代码在 $a 大于 $b 时显示 a is bigger than b,反之则显示 a is not bigger than b:


<?php
if ($a > $b) {
   print "a is bigger than b";
} else {
   print "a is not bigger than b";
}
?> 


else 语句仅在 if 以及 elseif(如果有的话)语句中的表达式的值为 false 时执行(参见 elseif)。

1、 使用 print_r ( $array/$var )

print_r()函数 ,只用于输出数组。

php教程 中 print_r 函数输出的数组内容不排列。为了让它输出的好看些。如,数组有多层。分段列出,我们可以这样写:

echo "<pre>";
print_r xxxxx;
echo "<pre>";

print 是打印的意思,而r则取自array的单词,那么该函数的功能就是打印数组内容,它既可以打印数组内容,也可以打印普通的变量。
print_r ($_request) ;
print_r ($_get) ; /* 打印使用get方法传递的表单内容*/
print_r($_post) ; /* 打印使用表单post方法传递过的数组内容*/

2、 使用 var_dump ($object/$array/$var)
var_dump -- 打印变量的相关信息
描述

void var_dump ( mixed expression [, mixed expression [, ...]])


此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

提示: 为了防止程序直接将结果输出到浏览器,您可以使用输出控制函数(output-controlfunctions)来捕获函数的输出,并把它们保存到一个 string 型的变量中。
 
var_dump($db) ; /*打印$db数据库教程连接对象的内容*/
var_dump($filehandle) ; /*打印文件句柄对象的内容*/
var_dump($smarty) ; /*打印smarty模板对象*/

3、 使用 var_export($object/$array/$var)
mixed var_export ( mixed expression [, bool return])


此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 php 代码。

您可以通过将函数的第二个参数设置为 true,从而返回变量的表示。

比较 var_export() 和 var_dump().


例如:
复制代码 代码如下:
<?php
$a = array ( 1,2, array("a","b","c")) ;
var_export ($a) ;
echo "<br>" ;
$v = var_export ( $a , true) ;
echo $v ;
?>

上例中,$v = var_export ( $a , true) 表示返回的是php的源代码,可以直接用php脚本的数组文件中。
相关说明:
以上三个函数都可以打印对象的值、系统函数值以及数组的内容;
 echo 、print、printf可以打印变量内容,但不能显示数组及系统超级变量数组;
 print_r 和 var_dump不仅可以打印数组、标量变量,还可以打印对象的内容;
 var_dump语句不仅能打印变量、数组内容,还可以显示布尔变量和资源(resource)的内容;
 var_export 函数返回关于传递给该函数的变量的结构信息,和 var_dump()函数类似,不同的是其返回的内容是合法的php代码。

foreach

php教程 4(不是 php 3)包括了 foreach 结构,和 perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。


foreach (array_expression as $value) statement
foreach (array_expression as $key => $value) statement


 

 

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。


注: 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。

 

注: 此外注意 foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此即使有 each() 的构造,原数组指针也没有变,数组单元的值也不受影响。

 

注: foreach 不支持用“@”来禁止错误信息的能力。


你可能注意到了以下的代码功能完全相同:


<?php
$arr = array("one", "two", "three");
reset ($arr);
while (list(, $value) = each ($arr)) {
   echo "value: $value<br>n";
}

foreach ($arr as $value) {
   echo "value: $value<br>n";
}
?> 


以下代码功能也完全相同:

<?php
reset ($arr);
while (list($key, $value) = each ($arr)) {
   echo "key: $key; value: $value<br>n";
}

foreach ($arr as $key => $value) {
   echo "key: $key; value: $value<br>n";
}
?> 

 

示范用法的更多例子:

 

<?php
/* foreach example 1: value only */

$a = array (1, 2, 3, 17);

foreach ($a as $v) {
   print "current value of $a: $v.n";
}

/* foreach example 2: value (with key printed for illustration) */

$a = array (1, 2, 3, 17);

$i = 0; /* for illustrative purposes only */

foreach ($a as $v) {
   print "$a[$i] => $v.n";
   $i++;
}

/* foreach example 3: key and value */

$a = array (
   "one" => 1,
   "two" => 2,
   "three" => 3,
   "seventeen" => 17
);

foreach ($a as $k => $v) {
   print "$a[$k] => $v.n";
}

/* foreach example 4: multi-dimensional arrays */

$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
   foreach ($v1 as $v2) {
       print "$v2n";
   }
}

/* foreach example 5: dynamic arrays */

foreach (array(1, 2, 3, 4, 5) as $v) {
   print "$vn";
}
?> 


for
for 循环是 php 中最复杂的循环结构。它的行为和 c 语言的相似。 for 循环的语法是:

 

for (expr1; expr2; expr3) statement


 

 

第一个表达式(expr1)在循环开始前无条件求值一次。

expr2 在每次循环开始前求值。如果值为 true,则继续循环,执行嵌套的循环语句。如果值为 false,则终止循环。

expr3 在每次循环之后被求值(执行)。

每个表达式都可以为空。expr2 为空意味着将无限循环下去(和 c 一样,php 认为其值为 true)。这可能不想你想象中那样没有用,因为你经常会希望用 break 语句来结束循环而不是用 for 的表达式真值判断。

考虑以下的例子。它们都显示数字 1 到 10:

 

<?php
/* example 1 */

for ($i = 1; $i <= 10; $i++) {
   print $i;
}

/* example 2 */

for ($i = 1; ; $i++) {
   if ($i > 10) {
       break;
   }
   print $i;
}

/* example 3 */

$i = 1;
for (;;) {
   if ($i > 10) {
       break;
   }
   print $i;
   $i++;
}

/* example 4 */

for ($i = 1; $i <= 10; print $i, $i++);
?> 

当然,第一个例子看上去最正常(或者第四个),但你可能会发现在 for 循环中用空的表达式在很多场合下会很方便。

php 也支持用冒号的 for 循环的替代语法。

 

for (expr1; expr2; expr3): statement; ...; endfor;


 

 

其它语言具有 foreach 语句来遍历数组或散列表,php 也行(见 foreach)。在 php 3 中,可以结合 list() 和 each() 函数用 while 循环来达到同样效果。例子见这些函数的文档。


do..while
do..while 和 while 循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。和正规的 while 循环主要的区别是 do..while 的循环语句保证会执行一次(表达式的真值在每次循环结束后检查),然而在正规的 while 循环中就不一定了(表达式真值在循环开始时检查,如果一开始就为 false 则整个循环立即终止)。

do..while 循环只有一种语法:


<?php
$i = 0;
do {
   print $i;
} while ($i > 0);
?> 

 

以上循环将正好运行一次,因为经过第一次循环后,当检查表达式的真值时,其值为 false($i 不大于 0)而导致循环终止。

资深的 c 语言用户可能熟悉另一种不同的 do..while 循环用法,把语句放在 do..while(0) 之中,在循环内部用 break 语句来结束执行循环。以下代码片段示范了此方法:

 

<?php
do {
   if ($i < 5) {
       print "i is not big enough";
       break;
   }
   $i *= $factor;
   if ($i < $minimum_limit) {
       break;
   }
   print "i is ok";

   /* process i */

} while(0);
?> 

如果你还不能立刻理解也不用担心。即使不用此“特性”你也照样可以写出强大的代码来。


while
while 循环是 php 中最简单的循环类型。它和 c 语言中的 while 表现得一样。while 语句的基本格式是:

 

while (expr) statement


 

 

while 语句的含意很简单,它告诉 php 只要while 表达式的值为 true 就重复执行嵌套中的循环语句。表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。有时候如果 while 表达式的值一开始就是 false,则循环语句一次都不会执行。

和 if 语句一样,可以在 while 循环中用花括号括起一个语句组,或者用替代语法:

 

while (expr): statement ... endwhile;


 

 

下面两个例子完全一样,都显示数字 1 到 10:

 

<?php
/* example 1 */

$i = 1;
while ($i <= 10) {
   print $i++;  /* the printed value would be
                   $i before the increment
                   (post-increment) */
}

/* example 2 */

$i = 1;
while ($i <= 10):
   print $i;
   $i++;
endwhile;
?> 

continue
continue 在循环结构用用来跳过本次循环中剩余的代码并开始执行下一次循环。

注: 注意在 php教程 中 switch 语句被认为是作为 continue 目的的循环结构。

continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。

 

<?php
while (list($key,$value) = each($arr)) {
if ($key == "zhoz"){ // 如果查询到对象的值等于zhoz,这条记录就不会显示出来了。
continue;
}
do_something ($value);
}
//  例子2
foreach ($list as $temp) {
if ($temp->value == "zhoz") {
continue; // 如果查询到对象的值等于zhoz,这条记录就不会显示出来了。
}
do_list; // 这里显示数组中的记录
}
?>

break
break 结束当前 for,foreach,while,do..while 或者 switch 结构的执行。

break 可以接受一个可选的数字参数来决定跳出几重循环。

<?php
$arr = array ('one', 'two', 'three', 'four', 'stop', 'five');
while (list (, $val) = each ($arr)) {
   if ($val == 'stop') {
       break;    /* you could also write 'break 1;' here. */
   }
   echo "$val<br>n";
}

/* using the optional argument. */

$i = 0;
while (++$i) {
   switch ($i) {
   case 5:
       echo "at 5<br>n";
       break 1;  /* exit only the switch. */
   case 10:
       echo "at 10; quitting<br>n";
       break 2;  /* exit the switch and the while. */
   default:
       break;
   }
}
?>

实例二

 

<?php
$i = 0;
while ($i < 7) {
if ($arr[$i] == "stop") {
break;
}
$i++;
}
?>

array()可以声明一个空数组;
array[] = $value 在数组存在时,追加一个数据;在数组不存时,生成一个数组,并追加数据。
array[$index] = $value 在数组存在时,追加或修改一个数据;在数组不存时,生成一个数组,并追加数据

range($n, $m); 指定值的范围。如range(2,4)生成数组 array(2,3,4)。
count($array); 取得数组的大小。
array_pad($array, $length, $value); 返回一个长度$length的数组,原不足数组补值为$value,长度足够返回原数组。

 

 代码如下 复制代码
// 声明数组
$test01 = array();
// 追加数据
$test01[] = "a";        // array(0 => "a");
// 追加一个索引为"a",数据为"b"的数据
$test01["a"] = "b";       // array(0 => "a", "a" => "b");
// 修改索引为0的数据
$test01[0] = "c";       // array(0 => "c", "a" => "b");
// 另一种声明方法
$test02 = array("a", "b", "c");         // array(0 => "a", 1 => "b", 2 => "c");
// 虽然声明了一个字符串索引的数据,但默认索引还是从0开始
$test03 = array("a" => "a", "b", "c");  // array("a" => "a", 0 => "b", 1 => "c");
// 声明中最大的索引为2,虽然最近是索引是0,但默认索引还是从3开始
$test04 = array(2 => "a", 0=>"b", "c");  // array(2 => "a", 0 => "b", 3 => "c");
// 声明一个小数索引会取其整数部分;指定索引时,会修改之前声明的值
$test05 = array("a", 2.7=>"b", 0=>"c");  // array(0 => "c", 2 => "b");
// 虽然声明了负数索引,但默认索引还是从0开始
$test06 = array(-2 =>"a", "b", "c");  // array(-2 => "a", 1 => "b", 2 => "c");
// 多维数组的定义


$test07 = array($test01, $test02, $test03);
php的数组,说白了,就是关联数据每一条数组都是以[索引,值]的形式保存的。其中索引默认是以0开始的数字。在未指定索引时,php会从0开始自动生成索引。当指定一个索引,php会从你指定索引最大正整数的下一个整数开始。如果你指定的是小数,php会取整数部分做为索引。

[!--infotagslink--]

相关文章

  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • 一个奇葩的最短的 IE 版本判断JS脚本

    使用 conditional comment 来判断 IE 的版本。嗯,是早早有人提出,但没有认真看代码。昨天刚好在看 CSS3 PIE 的时候看到,觉得是不是不靠谱。今天看到 Paul Irish 也提起,那么,推荐一下吧。这是作者博客上写的:复制代码 代码...2014-05-31
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25