PHP数组foreach循环

2018-02-22 16:40 更新

PHP教程 - PHP数组foreach循环

foreach 是一种特殊的循环语句,只适用于数组和对象。

foreach 可以以两种方式使用。

  • retrieve just the value of each element, or
  • retrieve the element"s key and value.

语法获取值

使用foreach检索每个元素的值,如下所示:

foreach ( $array as $value ) { 
   // (do something with $value here) 
} 
// (rest of script here)   


获取键和值的语法

要使用foreach检索键和值,请使用以下语法:

foreach ( $array as $key =>  $value ) { 
   // (do something with $key and/or $value here 
} 
// (rest of script here)   

实施例1

使用foreach循环获取值


<?PHP
   $authors = array( "Java", "PHP", "CSS", "HTML" ); 

   foreach ( $authors as $val ) { 
       echo $val . "\n"; 
   }   
?>

上面的代码生成以下结果。



实施例2

使用foreach循环通过关联数组


<?php //from   ww w  .  ja  va2s .  c o m
$myBook = array( "title" =>  "Learn PHP from www.w3cschool.cn", 
                "author" =>  "www.w3cschool.cn", 
                "pubYear" =>  2000 ); 

foreach ( $myBook as $key =>  $value ) { 
   echo "$key  \n"; 
   echo "$value \n"; 
} 

?>

上面的代码生成以下结果。

PHP使用foreach更改数组值

当使用foreach时,循环中的值是值的副本。

如果你改变了值,你“不影响值在原始数组中。以下示例代码说明了这一点:


<?PHP/*www .j a  va  2  s. c  o  m*/
$authors = array( "Java", "PHP", "CSS", "HTML" ); 

// Displays "Java PHP Javascript HTML"; 
foreach ( $authors as $val ) { 
   if ( $val == "CSS" ) $val = "Javascript"; 
   echo $val . " "; 
} 

print_r ( $authors );   
?>

上面的代码生成以下结果。

虽然$ val在循环中从“CSS"改为“Javascript"原始的$ authors数组保持不变。

怎么样

要修改数组值,我们需要得到foreach()返回一个引用数组中的值,而不是副本。

句法

要处理对数组元素的引用,请添加一个在foreach语句中的变量名之前的& (和号)符号:

foreach ( $array as & $value ) {

例子

这里的前面的例子改写为使用引用:


<?PHP
 $authors = array( "Java", "PHP", "CSS", "HTML" ); 
 foreach ( $authors as  & $val ) { 
   if ( $val == "CSS" ) $val = "Javascript"; 
   echo $val . " "; 
 } 
 unset( $val ); 
 print_r ( $authors );   
?>

上面的代码生成以下结果。

这一次,第三个元素的值在$ authors数组在数组本身中从“CSS"更改为“Javascript"。

注意

unset($ val)确保 $ val 变量在循环已完成。

当循环结束时,$ val仍然保存对最后一个元素的引用。在我们的代码中更改$ val改变$ authors数组的最后一个元素。通过取消设置$ val,我们避免潜在的错误。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号