Php入门教程之PHP If和else语句用法详解

 更新时间:2016年11月25日 15:02  点击:2321
If和else在php中是条件判断语句,他可以多层实现数据的判断了,下面我来给大家介绍If和else使用方法与一些简单的实例了。

条件语句
当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。

if…else 语句

在条件成立时执行一块代码,条件不成立时执行另一块代码
elseif 语句

与 if…else 配合使用,在若干条件之一成立时执行一个代码块
If…Else 语句


语法

if (condition)
  code to be executed if condition is true;
else
  code to be executed if condition is false;

如果您希望在某个条件成立时执行一些代码,在条件不成立时执行另一些代码,请使用 if….else 语句。


1.  if 条件语法(只在条件为true的情况下执行语句,为false不执行操作):


 使用语法:
1.if(expr)     //判断条件

2.statement     //符合条件后应该执行的语句


注意:符合if条件后,如果要执行的语句不止一行,则需要用大括号 {} 将多行语句围起来


示例:

 代码如下 复制代码

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

实例

如果当前日期是周五,下面的代码将输出 “Have a nice weekend!”,否则会输出 “Have a nice day!”:

 代码如下 复制代码

<html>
<body>

<?php
$d=date("D");
if ($d=="Fri")
  echo "Have a nice weekend!";
else
  echo "Have a nice day!";
?>

</body>
</html>

如果需要在条件成立或不成立时执行多行代码,应该把这些代码行包括在花括号中:

 代码如下 复制代码

<html>
<body>

<?php
$d=date("D");
if ($d=="Fri")
  {
  echo "Hello!<br />";
  echo "Have a nice weekend!";
  echo "See you on Monday!";
  }
?>

</body>
</html>

ElseIf 语句
如果希望在多个条件之一成立时执行代码,请使用 elseif 语句:

语法

 代码如下 复制代码

if (condition)
  code to be executed if condition is true;
elseif (condition)
  code to be executed if condition is true;
else
  code to be executed if condition is false;


实例
如果当前日期是周五,下面的例子会输出 “Have a nice weekend!”,如果是周日,则输出 “Have a nice Sunday!”,否则输出 “Have a nice day!”:

 代码如下 复制代码
1.//请将以下代码复制进html文件中进行测试  
2.<html>  
3.<body>  
4.<?php  
5.$d=date("D");  
6.if ($d=="Fri")  
7.  echo "哦耶!明天一起浪打浪!";   
8.elseif ($d=="Sun")  
9.  echo "尼玛!明天又开始悲剧了!";   
10.else 
11.  echo "既不悲剧也不喜剧的生活真无聊!";   
12.?>  
13.</body>  
14.</html> 
</html>

 代码如下 复制代码

//else if语句的应用

    $moth = date("n");                                //设置月份变量$moth
    $today = date("j");                                //设置日期变量$today
    if ($today >= 1 and $today <= 10){                //判断日期变量是否在1-10之间
        echo "今天是".$moth."月".$today."日上旬";    //如果是,说明是上旬
    }elseif($today > 10 and $today <= 20){            //否则判断日期变量是否在11-20之间
        echo "今天是".$moth."月".$today."日中旬";    //如果是,说明是中旬
    }else{                                            //如果上面两个判断都不符合要求,则输出默认值
        echo "今天是".$moth."月".$today."日下旬";    //说明是本月的下旬
    }


 

一个总结上面实例

 代码如下 复制代码


<?php  
/* php if else 判断实例 */ 
$flag = $_POST['flag'];   
// 这里是单个if的应用,如果表单提交了$flag=1,5-19行是一个代码块,当这个if成立这段代码块被执行   
if ($flag) {   
    echo '你提交了表单<br>';   
    $love = $_POST['love'];   
    // 这里是if..else,同上,但如果$love不成立else下11行被执行,   
    // 显然一个代码片段如果只有一行可以不使用{},我们还是建议都使用{}来表示一个代码片段   
    if ($love) {   
        echo '你喜欢PHP<br>';   
    } else {   
        echo '你不喜欢PHP?<br>';   
    }   
       
    $from = $_POST['from'];   
    // 这里是if elseif else
    if ($from==1) {   
        echo '你从网上知道PHP。<br>';   
    } elseif ($from==2) {   
        echo '你从朋友知道PHP。<br>';   
    } else {   
        echo '你从其它地方知道PHP。<br>';   
    }   
}   
?><br>   
  
<form method="post">   
<input type="hidden" name="flag" value="1" />   
<input name="love" type="checkbox" value="1">我喜欢PHP<br>   
你怎么知道PHP的   
<select name="from">   
<option value="1">网上</option>   
<option value="2">朋友</option>   
<option value="0">其它</option>   
  
</select>   
<input type="submit" value="提交" />   
</form>  
<?php
$flag = $_POST['flag'];
// 这里是单个if的应用,如果表单提交了$flag=1,5-19行是一个代码块,当这个if成立这段代码块被执行
if ($flag) {
    echo '你提交了表单<br>'
    $love = $_POST['love'];
    // 这里是if..else,同上,但如果$love不成立else下11行被执行,
    // 显然一个代码片段如果只有一行可以不使用{},我们还是建议都使用{}来表示一个代码片段
    if ($love) {
        echo '你喜欢PHP<br>';
    } else {
        echo '你不喜欢PHP?<br>';
    }
    
    $from = $_POST['from'];
    // 这里是if elseif else
    if ($from==1) {
        echo '你从网上知道PHP。<br>';
    } elseif ($from==2) {
        echo '你从朋友知道PHP。<br>';
    } else {
        echo '你从其它地方知道PHP。<br>';
    }
}
?>
<form method="post">
<input type="hidden" name="flag" value="1" />
<input name="love" type="checkbox" value="1">我喜欢PHP<br>
你怎么知道PHP的
<select name="from">
<option value="1">网上</option>
<option value="2">朋友</option>
<option value="0">其它</option>

 

</select>
<input type="submit" value="提交" />
</form>

 

if else条件是程序中最基本最常用的结构

if 判断后面的条件如果为true则执行if下面{}中的代码

else 如果if条件不成立为false则执行else下面{}中的代码

else if如果要使用多个条件判断时使用elseif

什么时候变量等同为true

int类型 值不为0
float类型 值不为0
string 值不为 ''或'0'
array 数组不为空
变量不为null

在php中运算符是我们程序开发中最基本的一个知识点了,下面我来给各位同学介绍在php中PHP 运算符一的些常用用法介绍。


PHP 运算符

PHP 运算符主要包括:

1.算术运算符
2.赋值运算符
3.比较运算符
4.三元运算符
5.逻辑运算符
6.字符串运算符
7.错误控制运算符

算术运算符

运算符 说明 例子 运算结果
+ 加 $x = 2;
$y = $x+1; $y = 3
- 减 $x = 2;
$y = $x-1; $y = 1
* 乘 $x = 2;
$y = $x*3; $y = 6
/ 除,返回结果为浮点类型 $x = 6;
$y = $x/3; $y = 2
% 求余,返回结果为浮点类型 $x = 6;
$y = $x%4; $y = 2
++ 递加,分为前加和后加
对布尔值和 NULL 无效 $x = 2;
++$x;(前加)
$x++;(后加) $x = 3
– 递减,分为前递减和后递减
对布尔值和 NULL 无效 $x = 2;
–$x;(前减)
$x–;(后减) $x = 1

对于前加和后加,执行后的结果都是变量加1,其区别在于执行时返回结果不一样,参考下面两个例子:


1 <?php 

2 $x = 2; 

3 echo $x++;  //输出2 

4 echo $x;    //输出3 

5   

6 $x = 2; 

7 echo ++$x;  //输出3 

8 echo $x;    //输出3 

9 ?>
递减同理。

赋值运算符
赋值运算符“=”用于赋值运算,赋值运算符的作用在于把右边的值赋值给左边变量:


1 $x = 2;
该例子将整型值 2 赋值给变量 $x。

赋值运算符其他用法
赋值运算符可以嵌套使用:


1 <?php 

2 $y = ($x = 2) + 5;    //结果为 $x=2,$y=7 

3 ?>
赋值运算符的一些变形使用方法:


1 $y += $x;
实际上它等同于:

 

1 $y = $y + $x;
同理有:


1 $y -= $x; 

2 $y *= $x; 

3 $y /= $x; 

4 $y %= $x; 

5 $y .= $x;   // . 为连接运算符,见字符串运算符
比较运算符

运算符 说明 例子 运算结果
== 等于 2 == 3 FALSE
!= 不等于,也可写作<> 2 == 3 TRUE
> 大于 2 > 3 FALSE
< 小于 2 < 3 TRUE
>= 大于等于 2 >= 3 FALSE
<= 小于等于 2 <= 3 TRUE

比较运算符也可用于字符串比较。

三元运算符
三元可以视作是特殊的比较运算符:


 (A) ? (B) : (C)
语法解释:在 A求值为 TRUE 时整个表达式的值为 B,否则为 C。

例子:

 

1 $y = ($x == 2) ? $x : 1;

该例子判断变量$x的值是否等于2,如果$x等于2,那么$y的值就等于$x(也就是等于2),反之$y就等于1。

逻辑运算符

运算符 说明 例子 运算结果

&& 逻辑与,也可写作 and $x = 2;
$y = 6;
$x && $y > 5 FALSE

|| 逻辑或,也可写作 or $x = 2;
$y = 6;
$x && $y > 5 TRUE

! 逻辑非,取逻辑的反面 $x = 2;
$y = 6;
!($x > $y) TRUE

连接运算符
字符串运算符主要指连接运算符“.”,它将连接其左右参数字符串。

例子:


$x = "beijing"; 

$y = $x."你好";       //$y = "beijing你好"


如该例子所示,字符和变量共同输出时需要使用连接运算符。

连接符与赋值运算符一起可构成连接赋值运算符:


$x = "beijing"; 

$x .="你好";      //$x = "beijing你好”

错误控制运算符
错误控制运算符:@,当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

<?php
/* 读取文件 */
$my_file = @file ('file1') or
    die ("打开文件失败,错误信息: '$php_errormsg'");
?>

错误控制运算符经常用于在可能产生错误的地方屏蔽 PHP 的系统错误而提示友好的错误信息


运算符优先级的一个例外


今天在老王的技术手册看到一个问题:

<?phpif ($a = 100 && $b = 200) {     var_dump($a, $b);}

输出是什么?

这个问题, 咋一看或许觉得简单, 但其实仔细推敲并不简单,

如果说布尔与之前的部分, 是由于优先级的问题, 但是如果仅仅是优先级的问题的话, 那么结果应该是:

$a = (100 && $b) = 200而实际上的结果, 确实高优先级的&&让步给次优先级的=, 让 $b = 200 先结合了.

究其原因, 是因为PHP并不完全遵守优先级的定义, 这个在PHP的手册中也有说明:

Note: Although = has a lower precedence than most other operators, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the return value of foo() is put into $a.

这样的设计, 个人不发表看法, 反正在C语言中, 这样类似的语句是判定为语法错的. PHP采用这样的设计, 很可能是历史原因,

有好奇的同学, 会想知道到底为什么, 之前jayeeliu网友也问过:

laruence你好:
问一个php运算符优先级的问题
$t == 1 && $tt = 2
按照php运算符优先级应该是
(($t == 1) && $tt) = 2
这个顺序执行,但实际上应该是
($t == 1) && ($tt = 2)
我有些不太理解。

其实也简单, 运算符优先级是在存在二义性文法的时候的一种规约规则选择的手段, 而PHP的语法分析文件定义中, 却让等号和T_BOOLEAN_AND(&&)之前不存在了规约冲突:

expr_without_variable:  // 有隐规则存在, 相当于T_BOOLEAN_AND成为了"一元操作符".  |   expr T_BOOLEAN_AND  { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); }

exp最后, 顺便说一下, PHP对应于T_BOOLEAN_AND 还定义了 T_LOGICAL_AND(and) 和 T_LOGICAL_OR(or) , 这俩个的优先级都低于等号, 于是就会有了, 很多PHP入门教材示例代码中经典的:

$result = mysql_query(*)  or die(mysql_error());

类似的还可以用or来实现三元操作符(?:)的功能:

$person = $who or $person = "laruence";

//等同于:    

$person = empty($who)? "laruence" : $who;

 

php 恒等运算符(===)与比较运算符(==)的区别


恒等计算符,和比较运算符号“==”的区别是 “==”不会检查条件式的表达式的类型,恒等计算符会同时检查表达式的值与类型。
这主要和php是无类型语言有关,比如 NULL,FALSE,array(),”",0,”0″这几个值如果用==他们是相等的,但是你如果判断出某个值真正的返回值呢,就可以用 ===
$a = 0;
$b = FALSE;
$a === FALSE 不成立,但 $b === FALSE成立,如果是==, $a == FALSE 和 $b == FALSE都成立

===运算符还是很有用的,php有些内置函数成功会返回某个值,失败会返回false,假如成功了但返回的是”"或者0之类的空值你怎么判断成功或者失败呢?这是就可以用 === ,它可以区分变量类型。

参考:

比较运算符 例子 名称 结果
$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。

如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。此规则也适用于 switch语句。

<?php

var_dump(0 == "a"); // 0 == 0 -> true

var_dump("1" == "01"); // 1 == 1 -> true

var_dump("1" == "1e0"); // 1 == 1 -> true

switch ("a") {

case 0:

    echo "0";

    break;

case "a": // never reached because "a" is already matched with 0

    echo "a";

    break;

}

?>


说了一堆了我们再看看另一篇文章


运算符号(php)操作符号

按运算符号的功能分为

■算数运算符 + – * / % ++ –
■字符串运算符(连接运算符) .
■赋值运算符  =   +=  -=  *=   %=   .=
■比较(关系、条件)运算符>  <   >=   <==  ==  ===  !=  <>  !==
■逻辑运算符 && and    ||or   !  not
■位运算符 &  |   ~ ^ <<   >>  >>>
■其他的预算符?  : ” ->  ->  ::  & $
■()改变优先级别
%有两个目的使用:整除运算;控制范围,不要用小数,也不要用负数
%会把两边的数转为整数后在整除
<?php
$year=2010;
if($yeay%4==0 && $year%100!=0  ||$year%400==0){
echo"今年是闰年";
}
控制范围
$num=4600009;
echo $num%10;//9任何数和10 取余不会超过9
$a++(先用变量再自增1)  ++$a(先自增1在用变量)  $a--   --$a
<?php
$a=10;
$b=$a++;//$b=10  $a=11
$c=--$b;//$c=9 $b=9
//    9           +     11
$d=$c++  +  ++$c;//$d=20 $c=11
$e=$d--  -  --$d;//2
$name="ljw";
$age=25;
$heigh=1.75;
echo "我的名字是:{$name}我的年龄:{$age}我的身高{$hegit}";
echo'我的名字是:'.$name.'我的年龄:'.$age.'我的身高'.$hegit.;
echo "/$age=".$age;比较运算符———条件运算法符————-关系运算符
比较后的结果只有一种  boolean  true   false
===全等运算符
!==
—————===比较时不仅要求内容相同,也要求类型相同
&按位与(两个都为1才为1)    |按位或(有一个为1就为1)   ^异或(不同为1相同为0)  ~取反(0与1互换) 左移  << , 右移>>   无符号>>右移
—————————————————————————————–
$a=20;//16+4                00000000   00000000  00000000  00010100
—————————————————————————————–
$b=30;//16+8+4+2    00000000   00000000  00000000  00011110
—————————————————————————————–
$c= $a & $b;
echo $c;
&和|既可以做为逻辑运算符,又可以作为位运算符
&&  ||
短路问题:&& 和||会发生短路
&& 在做运算时,如果前边的数为false,则后面是否为true,整个表达式都是false
|| 在做运算是,如果前面的数是true,则后边是否为false,整个表达式都为true;
&或|运算时,两边都会被执行。
其他运算符
条件?成立执行这里 :不成立则执行这里
反引号执行操作系统命令 “

$str=`ipconfig/all`;
echo '<pre>';
echo $str;
echo '</pre>'@getType();错误控制符,放在表达式前边,表达式有错误的时候屏蔽掉,不推荐使用。

Switch语句在php中我们叫他为开关语句,下面我来介绍Switch语句一些基本知识与应用中Switch语句的作用,有需要了解的朋友可参考。

Switch 语句

工作原理:

1.对表达式(通常是变量)进行一次计算
2.把表达式的值与结构中 case 的值进行比较
3.如果存在匹配,则执行与 case 关联的代码
4.代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
5.如果没有 case 为真,则使用 default 语句


如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。

使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。

语法

 代码如下 复制代码

switch (expression)
{
case label1:
  code to be executed if expression = label1;
  break;
case label2:
  code to be executed if expression = label2;
  break;
default:
  code to be executed
  if expression is different
  from both label1 and label2;
}

实例

工作原理:

1.对表达式(通常是变量)进行一次计算
2.把表达式的值与结构中 case 的值进行比较
3.如果存在匹配,则执行与 case 关联的代码
4.代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
5.如果没有 case 为真,则使用 default 语句

 代码如下 复制代码


<?php
switch ($x)
{
case 1:
  echo "Number 1";
  break;
case 2:
  echo "Number 2";
  break;
case 3:
  echo "Number 3";
  break;
default:
  echo "No number between 1 and 3";
}
?>

</body>
</html>


另外一个实例,利用switch实现一个页面多用途,首先建立test.php页面:

 代码如下 复制代码

<?php
echo "<a href='solution.php?action=add'>增加</a><br><br>";
echo "<a href='solution.php?action=del'>删除</a><br><br>";
echo "<a href='solution.php?action=search'>查找</a><br><br>";
echo "<a href='solution.php?action=update'>更新</a>";
?>

    当然这里sunec省略了其他大部分的代码,只是把其中一些提交按钮写了出来。我们可以看到,无论点击哪个按钮,我们都会跳转到solution.php页面,唯一不不同的是,问号后的action的内容分成了4种。我们可以把它称作是一种提示。

    接着,让我们看看solution.php是如何处理这四种操作的。

 代码如下 复制代码

<?php
$action=$_GET["action"];

switch ($action)
{
 case "add":
 echo "现在可以实现增加功能!";
 break;
 case "del":
 echo "现在可以实现删除功能!";
 break;
 case "search":
 echo "现在可以实现查询功能!";
 break;
 case "update":
 echo "现在可以实现更新功能!";
 break;
}
?>

再看个简单的实例

 代码如下 复制代码

<html>
<head>
<title>A switch Statement</title>
</head>
<body>
<?php
$mood = 'sad';
switch ( $mood ) {
    case 'happy':
        print 'I'm in a good mood';
        break;
    case 'sad':
        print 'Don't be down!';
        break;
    default:
        print 'Neither happy nor sad but $mood';
}
?>
</body>
</html>

循环语句在php中很多种,包括有如:for,foreach,while,do while,list,each等等这些都可以用在我们开发中,下面我来介绍常用的PHP 循环语句

今天就是PHP基础知识的最后两篇文章,目的很简单就是让大家对PHP有个初步的认识,这篇主要说下PHP循环,它用于执行相同的代码块指定的次数。为我们的开发节省时间。
循环

在您编写代码时,您经常需要让相同的代码块运行很多次。您可以在代码中使用循环语句来完成这个任务。

在 PHP 中,我们可以使用下列循环语句:

while
    只要指定的条件成立,则循环执行代码块
do…while
    首先执行一次代码块,然后在指定的条件成立时重复这个循环
for
    循环执行代码块指定的次数
foreach
    根据数组中每个元素来循环代码块

while 语句

只要指定的条件成立,while 语句将重复执行代码块。
语法
while (condition)
code to be executed;
例子

下面的例子示范了一个循环,只要变量 i 小于或等于 5,代码就会一直循环执行下去。循环每循环一次,变量就会递增 1:

 代码如下 复制代码

<html>
<body>

<?php
$i=1;
while($i<=5)
  {
  echo "The number is " . $i . "<br />";
  $i++;
  }
?>

</body>
</html>


do…while 语句

do…while 语句会至少执行一次代码 – 然后,只要条件成立,就会重复进行循环。
语法
 do
 {
 code to be executed;
 }
 while (condition);
例子

下面的例子将对 i 的值进行一次累加,然后,只要 i 小于 5 的条件成立,就会继续累加下去:

 代码如下 复制代码

<html>
<body>

<?php
$i=0;
do
  {
  $i++;
  echo "The number is " . $i . "<br />";
  }
while ($i<5);
?>

</body>
</html>


for 语句

如果您已经确定了代码块的重复执行次数,则可以使用 for 语句。
语法
 for (initialization; condition; increment)
 {
   code to be executed;
4 }

注释:for 语句有三个参数。第一个参数初始化变量,第二个参数保存条件,第三个参数包含执行循环所需的增量。如果 initialization 或 increment 参数中包括了多个变量,需要用逗号进行分隔。而条件必须计算为 true 或者 false。
例子

下面的例子会把文本 “Hello World!” 显示 5 次:

 代码如下 复制代码

<html>
<body>

<?php
for ($i=1; $i<=5; $i++)
{
  echo "Hello World!<br />";
}
?>

</body>
</html>

foreach 语句

foreach 语句用于循环遍历数组。

每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地移动) – 以此类推。
语法
 foreach (array as value)
 {
     code to be executed;
 }

例子

下面的例子示范了一个循环,这个循环可以输出给定数组的值:

 代码如下 复制代码

<html>
<body>

<?php
$arr=array("one", "two", "three");

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

</body>
</html>

一个遍历目录函数

 代码如下 复制代码
<?php  
/* 
*   递归获取指定路径下的所有文件或匹配指定正则的文件(不包括“.”和“..”),结果以数组形式返回 
*   @param  string  $dir 
*   @param  string  [$pattern] 
*   @return array 
*/  
function file_list($dir,$pattern="")  
{  
    $arr=array();  
    $dir_handle=opendir($dir);  
    if($dir_handle)  
    {  
        // 这里必须严格比较,因为返回的文件名可能是“0”   
        while(($file=readdir($dir_handle))!==false)  
        {  
            if($file==='.' || $file==='..')  
            {  
                continue;  
            }  
            $tmp=realpath($dir.'/'.$file);  
            if(is_dir($tmp))  
            {  
                $retArr=file_list($tmp,$pattern);  
                if(!emptyempty($retArr))  
                {  
                    $arr[]=$retArr;  
                }  
            }  
            else  
            {  
                if($pattern==="" || preg_match($pattern,$tmp))  
                {  
                    $arr[]=$tmp;  
                }  
            }  
        }  
        closedir($dir_handle);  
    }  
    return $arr;  
}  
  
// 列出网站根目录下所有以".php"扩展名(不区分大小写)结尾的文件   
echo '<pre>';  
print_r(file_list($_SERVER['DOCUMENT_ROOT'],"//.php$/i"));  
echo '</pre>';  
?>  

这个就可以方便的无限目录遍历了。.

 

foreach与while性能比较


在循环里进行的是数组“读”操作,则foreach比while快:

在循环里进行的是数组“写”操作,则while比foreach快

 代码如下 复制代码

/**
 * while跟foreach函数性能比较
 *
 */
 
// foreach 函数
foreach ($array as $key => $value) {
    echo $array[$key] = $value . '...';
}
 
// while 函数
while (list($key) = each($array)) {
    $array[$key] = $array[$key] . '...';
}

总结:通常认为,foreach涉及到值复制,一定会比while慢,但实际上,如果仅仅是在循环里进行数组的读操作,那么foreach是很
快的,这是因为PHP采用的复制机制是“引用计数,写时复制”,也就是说,即便在PHP里复制一个变量,最初的形式从根本上说其实
仍然是引用的形式,只有当变量的内容发生变化时,才会出现真正的复制,之所以这么做是出于节省内存消耗得目的,同时也提升了
复制的效率。

 


这样看来,foreach的高效读操作就不难理解了。另外,既然foreach不适合处理数组写操作,那么我们可以得出一个结
论,多数情况下,类似foreach ($array as $key => $value)形式的做数组写操作得代码都应该被替换成while (list($key) =
each($array))。这些技巧产生的速度差异在小项目里可能并不明显,但是在类似框架这样的大项目中,一次请求动辄便会涉及到几
百几千几万次数组循环操作,差异就会明显放大。

在php中数组是一个很重要的数据类型他可以存储不同类型的数据,相对于其它简单的整型,字符型只能存放单一的数据要强很多,下面我来介绍php数组用法。

PHP数组可以说非常重要的知识之一,能够在单独的变量名中存储一个或多个值。

什么是数组?
在使用 PHP 进行开发的过程中,会需要创建许多相似的变量。无需很多相似的变量,你可以把数据作为元素存储在数组中。数组中的元素都有自己的 ID,因此可以方便地访问它们。

有三种数组类型:
数值数组
带有数字 ID 键的数组
关联数组
数组中的每个 ID 键关联一个值
多维数组
包含一个或多个数组的数组
数值数组
数值数组存储的每个元素都带有一个数字 ID 键。可以使用不同的方法来创建数值数组:

例子 1

在这个例子中,会自动分配 ID 键:

 代码如下 复制代码
$names = array("Peter","Quagmire","Joe");

例子 2

在这个例子中,我们人工分配的 ID 键:

 代码如下 复制代码

 

 $names[0] = "Peter"; 

 $names[1] = "Quagmire"; 

 $names[2] = "Joe";

可以在脚本中使用这些 ID 键:

 代码如下 复制代码

 

<?php

$names[0] = "Peter";
$names[1] = "Quagmire";
$names[2] = "Joe";

echo $names[1] . " and " . $names[2] . " are ". $names[0] . "'s neighbors";
?>

以上代码的输出:

1 Quagmire and Joe are Peter's neighbors
关联数组
关联数组,它的每个 ID 键都关联一个值。在存储有关具体命名的值的数据时,使用数值数组不是最好的做法。通过关联数组,我们可以把值作为键,并向它们赋值。

例子 1

在本例中,我们使用一个数组把年龄分配给不同的人:


 

 代码如下 复制代码
$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);


例子 2
本例与例子 1 相同,不过展示了另一种创建数组的方法:

 代码如下 复制代码

$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";


可以在脚本中使用 ID 键:

 代码如下 复制代码


<?php

$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";

echo "Peter is " . $ages['Peter'] . " years old.";
?>

以上脚本的输出:

 

 Peter is 32 years old.

多维数组

在多维数组中,主数组中的每个元素也是一个数组。在子数组中的每个元素也可以是数组,以此类推。

例子 1
在本例中,我们创建了一个带有自动分配的 ID 键的多维数组:

 代码如下 复制代码

$families = array
(
  "Griffin"=>array
  (
  "Peter",
  "Lois",
  "Megan"
  ),
  "Quagmire"=>array
  (
  "Glenn"
  ),
  "Brown"=>array
  (
  "Cleveland",
  "Loretta",
  "Junior"
  )
);

如果输出这个数组的话,应该类似这样:

Array
(
[Griffin] => Array
  (
  [0] => Peter
  [1] => Lois
  [2] => Megan
  )
[Quagmire] => Array
  (
  [0] => Glenn
  )
[Brown] => Array
  (
  [0] => Cleveland
  [1] => Loretta
  [2] => Junior
  )
)

例子 2
让我们试着显示上面的数组中的一个单一的值:

 代码如下 复制代码

 

 echo "Is " . $families['Griffin'][2] . 

 " a part of the Griffin family?";

以上代码的输出:

 


Is Megan a part of the Griffin family?


PHP方面的内容,就为大家简单的分享一下,希望大家在修改WordPress主题的时候有帮助。磊子也是边学边做,有很多地方自己也不是非常的了解,希望自己也有所提高。


数组元素的显示

在如上使用的无论$people[2]也好,无论$peoples['cs']也好,都只是输出已知的明确位置的数组元素值,如何快速输出所有或部分的数组元素,使用循环语句无疑是最快的方法。

 代码如下 复制代码


<?php
$people=array('name','sex','nation','birth');
for ($i=0;$i<4;$i++)
    echo "$people[$i] ";
?>

 

除了使用了解循环次数的for循环以外,还可以使用对循环次数无须要求的foreach语句。

 代码如下 复制代码


<?php
$people=array('name','sex','nation','birth');
foreach($people as $xiangmu)
    echo $xiangmu;
?>

 
数组遍历


用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢?
比如:

 代码如下 复制代码

<?php

$arr['laruence'] = 'huixinchen';

$arr['yahoo']    = 2007;

$arr['baidu']    = 2008;

foreach ($arr as $key => $val) {

//结果是什么?

}< li>


又比如:

<?php

$arr[2] = 'huixinchen';

$arr[1]  = 2007;

$arr[0]  = 2008;

foreach ($arr as $key => $val) {

//现在结果又是什么?

}< li>

[!--infotagslink--]

相关文章

  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表:复制代码 代码如下:create table if not exists t( id int, addTime datetime default '0000-00-00 00:00:00′)添加两条初始数据:insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07...2014-05-31
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • C#条件语句、循环语句(if、while)

    这篇文章主要介绍了C#条件语句、循环语句(if、while)的用法,学习c#的朋友可以参考下...2020-06-25
  • iscroll.js 用法介绍

    最新版下载: http://www.csdn123.com/uploadfile/2015/0428/20150428062734485.zip 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生...2016-05-19
  • C++中cin的用法详细

    这篇文章主要介绍了C++中cin的用法详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • C#中的try catch finally用法分析

    这篇文章主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c# 循环语句的使用方法

    这篇文章主要介绍了c# 循环语句的使用方法,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-06-25
  • Mysql 原生语句中save or update 的写法汇总

    背景&#8195;&#8195;在平常的开发中,经常碰到这种更新数据的场景:先判断某一数据在库表中是否存在,存在则update,不存在则insert。 如果使用Hibernate,它自带saverOrUpdate方法,用起来很方便,但如使用原生sql语句呢? &#8195;...2015-03-15
  • C#线程入门教程之单线程介绍

    这篇文章主要介绍了C#线程入门教程之单线程介绍,本文讲解了什么是进程、什么是线程、什么是多线程等内容,并给出了一个单线程代码示例,需要的朋友可以参考下...2020-06-25
  • jquery if条件语句的写法

    下面小编就为大家带来一篇jquery if条件语句的写法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-05-20
  • 示例详解react中useState的用法

    useState 通过在函数组件里调用它来给组件添加一些内部 state,React 会在重复渲染时保留这个 state,接下来通过一个示例来看看怎么使用 useState吧...2021-06-04
  • 如何利用JavaScript编写更好的条件语句详解

    这篇文章主要给大家介绍了关于如何利用JavaScript编写更好的条件语句的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JavaScript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-08-10
  • Delphi常用关键字用法详解

    这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
  • PHP中print_r、var_export、var_dump用法介绍

    文章详细的介绍了关于PHP中print_r、var_export、var_dump区别比较以及这几个在php不同的应用中的用法,有需要的朋友可以参考一下 可以看出print_r跟var_export都...2016-11-25
  • php中php://input的用法详细

    在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input。 下面的例子摘取的是wordpres...2016-11-25
  • MySQL中的主键以及设置其自增的用法教程

    1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表结构时为表加上主键,如: ALTER TABLE tbl_name ADD PRIMARY KEY (in...2015-11-24
  • CocosCreator入门教程之用TS制作第一个游戏

    这篇文章主要介绍了CocosCreator入门教程之用TS制作第一个游戏,对TypeScript感兴趣的同学,一定要看一下...2021-04-16
  • C#中this的用法集锦

    本文给大家汇总介绍了C#中的几种this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码。...2020-06-25
  • C#实现String字符串转化为SQL语句中的In后接的参数详解

    在本篇文章中小编给大家分享的是一篇关于C#实现String字符串转化为SQL语句中的In后接的实例内容和代码,需要的朋友们参考下。...2020-06-25