Ph**P中foreach()用法汇总

时间:2016.05.04 发布人:kw990wg65

Ph**P中foreach()用法汇总

已解决问题

谷歌kw990wg65用户在2016.05.04提交了关于“比特Ph**P中foreach()用法汇总”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-03-02T17:37:22。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,希望你能感受到,我最真诚的谢意 !

希望以下的回答,能够帮助你。

第1个回答

用户名:来自fspot  

  这篇文章主要给大家详细介绍了Ph**P中f主进历套探类oreach()用法以及办相关的示例,十分的细致,有需要的小伙伴可以参考下。

  Ph**P4引入了foreach结构,和Perl以及其他语言很像。这只是一种遍历数组简便方法。foreach仅能用于数组,当试图将其用己食顺胡通于其它**类型或者一个未初始化的变量时会**生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。

  ?

  1

  2

  3

  4

  5fo站聚承夫块所reach(array_类细日教甚紧拉斗各千expressionas$value)

  statement

  foreach(array_expression态当率as$key=>$value)

  statem限示些硫黑袁延色饭卷ent

  第一种格式遍历给跑着衡富诉散者新校事乐定的array_expression数组。每次循环中,当前单元的慢决值被赋给$value并且数组**的指针向前移一步(因此粮下一次循环中将会得到下原封握一个单元)。

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

  先来看第一个语句,这个语句比较简单,array_expression指的是一个数组表达式,as$val语句将顺序取得该数组的值并保存到$val变量中,此种方法只能取得数组内的值,而不能取得数组的下标观比抗汉女巴索引值。例如:

  ?

  1

  2

  3

  4$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3");

  foreach($myArrayas$val){

  print($val."")机又九依;

  }

  其结果会输出:val1val2val3

  再来看看第二种格式,第二种格式除了能像第一种格式一样得到数组内元素的值外,还能得到轻南个素落密伟植元素的索引值,并保存到$key变量中,如果数组另析突念气色孙坚手的索引值未经过人工设定,则返回系统默认的设定值,

装二权队硫举赵  看正面例子:

  先看一个简单的一维数组

  ?

  1

  2

  3

  4$myArray=array("1"=>"val1","2"="val紧2","3"=>"val3");

  foreach($myArrayas$key=>$val){

  print($key."=>".$val.";");

  }

  该程序将出输出:1=>val1;2=>val2;3=>val3;,接下来我们再来看一个复杂一点的二维数组遍历,程序如下:

  ?

  17$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")

  );

  print("

");

  foreach($myArrayas$key=>$val){

  print("

".$key."");

  if(is_array($val)){//判断$val的值是否是一个数组,如果是,则进入下层遍历

  print("

");

  foreach($valas$key=>$val){

  print("

".$key."=>".$val."");

  }

  print("

");

  }

  }

  print("

");

  输出结果:

  ?

  121

  11=>val11

  12=>val12

  13=>val13

  2

  21=>val21

  22=>val22

  23=>val23

  3

  31=>val31

  32=>val32

  33=>val33

  

和是标签,作用是显示个实心小圆点和空心小圆点。

  由于上面的是一个二维数组,在第一次遍历后所得到的$val值将是一个数组,所以我在遍历中加了一个判断,以便进行二层数组遍历。

  再通过一个实例解惑

  ?

  $a=array("1"=>"语文","2"=>"数学","3"=>"英语");

  $b=array("1"=>"95","2"=>"99","3"=>"92");

  foreach($aas$key=>$value){

  echo$value;

  echo$b[$key]."
";

  }

  ?>

  问题是为什么输出数组$b中的值要用$b[$key]而不是$b[$value]?

  这是为什么呢?

  $a=array("1"=>"语文","2"=>"数学","3"=>"英语");

  上面这个和下面这个是完全一样的

  $a[1]="语文";

  $a[2]="数学"

  $a[3]=“英语”

  我们输出上面的数组是怎么输出的呢?

  肯定是echo$a[1];

  对不对?

  如果没有疑问我们继续!!!!

  ------------------------------

  简单说foreach

  它的格式是这样的foreach(数组名as下标=>值)

  下标也就是上面的$a[1],这里的1就是数组的下标!

  到这你应该明白了,为什么是$a[$key]这样输出

  你记住不管怎么变,数组的输出方法永远是$a[1],不会是$a['语文']

  ================================================================

  foreach()有两种用法:

  ?

  1

  2

  31:foreach(array_nameas$value){

  statement;

  }

  这里的array_name是你要遍历的数组名,每次循环中,array_name数组的当前元素的值被赋给$value,并且数组**的下标向下移一步,也就是下次循环回得到下一个元素。

  ?

  1

  2

  32:foreach(array_nameas$key=>$value){

  statement;

  }

  这里跟第一种方法的区别就是多了个$key,也就是除了把当前元素的值赋给$value外,当前元素的键值也会在每次循环中被赋给变量$key。键值可以是下标值,也可以是字符串。比如book[0]=1中的“0”,book[id]="001"中的“id”.

  以上所述就是本文的全部内容了,希望大家能够喜欢。