PHP数组遍历的几种常见方式总结

PHPz
Freigeben: 2019-08-21 17:06:59
Original
1157 Leute haben es durchsucht

PHP数组遍历的几种常见方式总结

本文实例讲述了PHP数组遍历的几种常见方式。分享给大家供大家参考,具体如下:(需要注意的地方会用红色标记出来)

推荐教程:php视频教程

1、使用for循环遍历数组

<span style="font-size: 14px;">  conut($arr);</span>用于统计数组元素的个数。
  for循环只能用于遍历,纯索引数组!
  如果存在关联数组,count统计时会统计两种数组的总个数,使用for循环遍历混合数组,导致数组越界!

$arr = array(1,2,3,5,6,7);
$num = count($arr); //count最好放到for外面,可以让函数只执行一次
echo "数组元素的个数{$num}<br/>";
for($i=0;$i<$num;$i++){
 echo "{$i}==>{$arr[$i]}<br/>";
}
Nach dem Login kopieren

2、forEach循环遍历数组

  foreach可以遍历任何类型的数组!

$arr = array(1,2,3,"one"=>4,5,6,7);
foreach($arr as $value){
 echo "{$item}<br>";
}
foreach($arr as $key => $value){
 echo "{$key}==>{$item}<br>";
}
Nach dem Login kopieren

  解析多维数组

$h51701 = array(
 "group1"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 ),
 "group2"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 ),
 "group3"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 )
);
foreach ($h51701 as $key => $value) {
 echo "{$key}<br><br>";
 foreach ($value as $key1 => $value1) {
  echo "第".($key1+1)."个同学<br>";
  foreach ($value1 as $key2 => $value2) {
  echo "{$key2}==>{$value2}<br>";
  }
  echo "<br>";
 }
 echo "------------------------<br>";
}
Nach dem Login kopieren

3、使用list()、each()、while()遍历数组

重点

  list():用于将数组的每一个值,赋值给list函数的每一个参数。(list函数的参数,必须小于等于数组的元素个数);

list($a,$b,$c)=[1,2,3];
//$a=1; $b=2; $c=3;
Nach dem Login kopieren

注意:
  ① list()在解析数组时,只解析索引数组;
  ② list可以通过空参数,选择性的解析数组的值;

list($a,,$b)=[1,2,3];
//$a=1;  $b=3;
Nach dem Login kopieren

重点

  each():用于返回数组当前指针所在位的键值对!并将指针后移一位;

返回值:

  如果指针有下一位,返回一个数组。包含一个索引数组(0-键,1-值)和一个关联数组("key"-键,"value"-值);如果指针没有下一位,返回false;

原理:

each($arr) 返回数组或false;
② 把数组或false赋值给$a;
③ while判断$a如果是数组,继续执行下一次;

如果$a是false,终止循环

while($a = each($arr)){
 echo "{$a[0]}-->{$a[1]}<br>";
 echo "{$a[&#39;key&#39;]}-->{$a[&#39;value&#39;]}<br>";
}
Nach dem Login kopieren

使用list()/each()/while()配合遍历数组

while(list($key,$value) = each($arr)){
  echo "{$key}-->{$value}<br>";
}
reset($arr);
Nach dem Login kopieren

数组使用each()遍历完一遍后,指针使用处于最后一位的下一位;即再用each(),始终返回false;

如果还需使用,需用reset($arr);函数,重置数组指针;

$arr = array(1,2,3,"one"=>4,5,6,7);
foreach($arr as $value){
 echo "{$item}<br>";
}
foreach($arr as $key => $value){
 echo "{$key}==>{$item}<br>";
}
while(true){
  $a = each($arr);
 if($a){
  echo "{$a[0]}-->{$a[1]}
"; echo "{$a['key']}-->{$a['value']}
"; }else{ break; } } while(list($key,$value) = each($arr)){ echo "{$key}-->{$value}
"; } reset($arr); while(list($key,$value) = each($arr)){ echo "{$key}-->{$value}
"; }
Nach dem Login kopieren

4、 使用数组指针遍历数组

  ① next:将数组指针,后移一位。并返回后一位的值;没有返回false
  ② prev:将数组指针,前移一位。并返回前一位的值;没有返回false
  ③ end: 将数组指针,移至最后一位,返回最后一位的值;空数组返回false
  ④ reset:将数组指针,恢复到第一位。并返回第一位的值;空数组返回false
  ⑤ key: 返回当前指针所在位的键;
  ⑥ current:返回当前指针所在位的值;

方法一

$arr = [1,2,3,4,"one"=>5];
while(true){
  echo key($arr);
  echo "--";
  echo current($arr);
 echo "<br>";
 if(!next($arr)){
  break;
  }
}
reset($arr);
Nach dem Login kopieren

  方法二

do{
  echo key($arr);
  echo "--";
  echo current($arr);
 echo "<br>";
}while(next($arr));
reset($arr);
Nach dem Login kopieren

相关推荐:

  PHP数组实用基础知识

  php数组专题

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!