主页 > 知识库 > 网络编程 > PHP >

PHP

php数组的遍历讲解 for foreach list each key

来源:中国IT实验室 作者:佚名 发表于:2013-06-23 21:50  点击:
php数组的遍历讲解 本文主要讲解for,foreach,list,each,key,指针操作相关函数,array_flip ,array_reverse,array_walks等函数的对数组的遍历 1.for循环遍历数组 for循环是几乎所有语言都可以用的一种遍历数组的方式,但是在php语言中for循环不是遍历数
 php数组的遍历讲解  本文主要讲解for,foreach,list,each,key,指针操作相关函数,array_flip ,array_reverse,array_walks等函数的对数组的遍历
  1.for循环遍历数组
  for循环是几乎所有语言都可以用的一种遍历数组的方式,但是在php语言中for循环不是遍历数组的首选
  一下是for循环实现数组遍历的示例代码
  
  /*
  Designed By Androidyue
  php中数组的遍历讲解*/
  //for 循环遍历数组
  //声明一个数组并且初始化
  $array=array('Google','Chrome','Android','Youtube','Gmail');
  //使用for循环遍历各数组元素,count()用来计算数组的长度
  for($i=0;$i
  //打印数组的元素的值
  echo $array[$i],"
";
  }
  ?>
  注意:使用for遍历数组存在以下限制:
  a 所遍历的数组必须是索引数组(即下标为数字的数组),不能是关联数组(下标为字符串的数组)
  如下列代码
  
  $arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');
  for($i=1;$i<=count($arrGoogle);$i++){
  echo $arrGoogle[$i];
  }
  ?>
  在运行时会报错,类似于这样的错误Notice: Undefined offset: 1 in D:/phpnow/htdocs/holiday/php_array_visit_summary.php on line 13这说明for不适合用于关联数组的遍历
  b,for遍历的数组既要满足是索引数组,同时下标又要是连续的整数,如果不是连续的整数则会发生提示
  如下列代码
  
  $array=array(1=>'Google',5=>'Chrome',7=>'Android',9=>'Youtube',12=>'Gmail');
  //print_r($array);
  for($i=0;$i
  echo $array[$i],"
";
  }
  ?>
  这种情况下也会发生提示类似于Notice: Undefined offset: 2 in D:/phpnow/htdocs/holiday/php_array_visit_summary.php on line 10 因此for循环遍历数组必须是索引数组而且下标必须是连续的。
  2.foreach遍历数组
  foreach可以说是php语言单独为遍历数组提供的一种方法(其他语言也可能有),这种遍历方法是php遍历数组的首选
  foreach遍历时可以是这样的foreach($array as $key=>$value)包含键值元素 也可以是foreach($array as $value)只包含值
  foreach($array as $value)示例代码
  
  /*
  Designed By Androidyue
  php中数组的遍历讲解*/
  //foreach实现遍历数组
  $arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');
  //只包含值
  foreach($arrGoogle as $value){
  echo $value.'
';
  }
  ?>
  foreach($array as $key=>$value)的代码示例
  
  $arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');
  foreach($arrGoogle as $key=>$value){
  echo '第',($key+1),'个数组元素的值是',$value,'
';
  }
  ?>
  注意以上的$value和$key都是自定义的变量,因此可以根据需要更改成符合自己风格的命名方式
  3.使用list函数遍历数组
  list()函数是将数组中的值赋给变量
  标准语法:void list ( mixed varname, mixed ... )
  用list实现对数组的遍历代码
  
  //使用list遍历函数
  //$arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');//使用关联数组不行
  $arrGoogle=array('google','Gmail','Chrome','Android');
  list($brand,$email,$webBrowser,$phone)=$arrGoogle;
  echo $brand,$email,$webBrowser,$phone;
  ?>
  注意:
  a list函数所接受的数组只能是索引数组,不能是关联数组!如果是关联数组,则会出现类似 Notice Undefined offset提示
  b 如果只是部分取出数组的值,只需 按照这样的写法即可,list(,,$chrome,)=$arrGoogle;这样我们就可以去除chrome的信息,但是注意一定要保证list参数与数组的元素个数相同(所取值前面的个数)
  c list函数赋值按索引顺序赋值
  4.each函数遍历数组
  each函数返回输入数组的键值对
  标准语法:array each(array input array)
  返回值:返回4个值0,1,key,value;其中0和key包含键名,而1和value包含相应的数据
  使用each遍历数组的示例代码如下:
  
  //使用each函数遍历数组
  $arrGoogle=array('google','Gmail','Chrome','Android');
  //第一次使用each取得当前键值对,并且将指针移到下一个位置
  $arrG=each($arrGoogle);
  //打印结果,并且换行以清晰显示结果
  print_r($arrG);
  print '
';
  $arrGmail=each($arrGoogle);
  print_r($arrGmail);
  print '
';
  $arrChrome=each($arrGoogle);
  print_r($arrChrome);
  print '
';
  $arrAndroid=each($arrGoogle);
  print_r($arrAndroid);
  print '
';
  //当指针位于数组末尾再次执行函数each,如果是这样再次执行结果返回false
  $empty=each($arrGoogle);
  //如果指针无法继续后移返回false
  if($empty==false){
  print '指针以位于数组末尾,无法在向后移,故返回false';
  }
  ?>
  注意:该函数的参数和返回值(在执行该函数前指针不位于数组末尾时)都为数组,在执行函数前数组指针位于数组末尾时再次执行该函数返回值为false
  开始的位置是第一个元素,每(正常)执行一次该函数,指针向后移到下一个地址
  5.key()遍历数组
  each是用来返回数组的键名
  基本语法:mixed key ( array &array )
  key函数遍历数组示例代码如下
  
  //Designed By Androidyue
  //使用key函数遍历数组
  //初始化一个关联数组
  $arrChina=array('a'=>'Hebei','b'=>'Anhui','c'=>'Beijing','d'=>'Guangdong','e'=>'Shanghai');
  //初始化一个索引数组 但是索引数组使用key返回的是空字符产
  $arrCN=array('Hebei','Anhui','Beijing','Guangdong','Shanghai');//key显示的是数组的字符串下标,如果为索引数组则为空字符串
  //print_r($arrChina);
  while($key=key($arrChina)){//对于关联数组使用key方法可以执行
  echo $key,'
';
  next($arrChina);
  }
  print_r($arrCN);//输出一下索引数组
  while($keyName=key($arrCN)){//这里调用key函数赋值后为false,while条件不成立,不进行{}之间的操作
  /*if(empty($keyName)){
  print '该键名为空
';
  }*/
  /*if($keyName=''){
  print '该键名为空
';
  }*/
  var_dump($keyName);
  }
  //验证对索引数组使用key函数的返回值赋值给变量这个表达式的布尔值
  if(($KeyName=key($arrCN))==false){
  print 'False';
  }
 

有帮助
(1)
100%
没帮助
(0)
0%