Home  >  Article  >  Backend Development  >  Summary of several common methods of PHP array traversal

Summary of several common methods of PHP array traversal

PHPz
PHPzOriginal
2016-07-21 15:36:181199browse

Summary of several common methods of PHP array traversal

The examples in this article describe several common methods of PHP array traversal. Share it with everyone for your reference, as follows: (Places that need attention will be marked in red)

Recommended tutorials: php video tutorial

1. Use a for loop to traverse the array

<code><span style="font-size: 14px;">  conut($arr);</span> conut($arr);
Used to count the number of array elements. The for loop can only be used to traverse, pure index arrays!
 If there is an associative array, the total number of the two arrays will be counted during count statistics, and a for loop will be used to traverse the mixed array, causing the array to go out of bounds!

$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/>";
}

2. forEach loop traverses the array

foreach can traverse any type of array!

$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>";
}

Parsing multi-dimensional arrays
$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>";
}

3. Use list(), each(), while() to traverse the array

Key points

:

list(): used to add each value of the array, Assign a value to each parameter of the list function. (The parameters of the list function must be less than or equal to the number of elements in the array

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

Note:

 ① list() in When parsing an array, only the index array is parsed;
 ② list can selectively parse the value of the array through empty parameters;

list($a,,$b)=[1,2,3];
//$a=1;  $b=3;

Key points:

 each(): used to return the key-value pair where the current pointer of the array is! And move the pointer back one position;

Return value:

 If the pointer has Next bit, returns an array. Contains an index array (0-key, 1-value) and an associative array ("key"-key, "value"-value); if the pointer has no next digit, return false;

Principle:

 each($arr)
Returns an array or false;
② Assign the array or false to $a;
③ while determine if $a is an array, continue to execute the next time;

If $a is false, terminate the loop

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

Use list()/each()/while() to traverse the array

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

Array usage After each() has been traversed once, the pointer uses the next digit from the last digit; that is, if each() is used again, it always returns false;

reset($arr);If you still need to use it, you need to use the

function to reset it Array pointer;
$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}
"; }

4. Use array pointer to traverse the array

 ① next:
will Array pointer, shifted back one bit. And return the value of the next digit; if false is not returned  ② prev:
moves the array pointer forward one digit. And return the value of the previous digit; if false is not returned, ③ end:
Move the array pointer to the last digit and return the value of the last digit; an empty array returns false ④ reset:
Restore the array pointer to the first position. And returns the first value; an empty array returns false ⑤ key:
Returns the key where the current pointer is;  ⑥current:
Returns the key where the current pointer is Value;

Method 1

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

Method 2

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

Related recommendations:

 Practical basic knowledge of PHP arrays

 Special topics on PHP arrays

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn