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>"; }
$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['key']}-->{$a['value']}<br>"; }
Use list()/each()/while() to traverse the array
while(list($key,$value) = each($arr)){ echo "{$key}-->{$value}<br>"; } reset($arr);
reset($arr);
If you still need to use it, you need to use the
$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: