for循环遍历数组:
使用for遍历数组
保证数组: 一定要是下标连续的索引数组
优点:效率很高, 就是数组访问方式, 只不过通过循环去取值
count(数组) 获取数组的长度, 是数组的实际元素的个数
不足:数组下标不一定是连续的
关联数组for循环不能遍历出值
$arr = array("aa", "bb", "cc", "dd", "ee", "ff", "ggg", "hh");
$nums = count($arr);
for($i=0; $i < $nums; $i++) {
echo $arr[$i].'<br>';
}
缺点:for循环遍历不出9及后面的数组,count为8
$arr = array("aa", "bb", "cc", "dd", 9=>"ee", "ff", "ggg", "hh");
$nums = count($arr); //8
$nums = 13;
for($i=0; $i < $nums; $i++) {
echo $arr[$i].'<br>';
}
foreach()语法遍历数组:
foreach(数组 as 自定义变量) {
}
数组有多少个元素, foreach就循环多少次
foreach会将数组中的元素 在每次循环中,依次将元素的值给自定义的变量,在每次循环中用到这个变量,即用到了当前的数组中的元素
foreach(数组 as 下标变量 => 值变量) {
}
PS:默认下标从0开始,若给了键,则从键开始下标+1
$arr = array("one"=>"aa", "bb", "three"=>"cc", "dd", 9=>"ee", "ff", "four"=>"ggg", "hh", "xxx", "yyy", "zz");
方法1:只遍历值
foreach($arr as $value){
echo "{$value}<br>";
}
方法二:遍历键和值
foreach ($arr as $kk => $vv) {
echo "{$kk}======>{$vv}<br>";
}
foreach遍历数组应用:
实现将数组遍历到表格内
<?php
$group=[ "name"=>"第三组",
"price"=>8888,
["name"=>"zs","age"=>20,"sex"=>"男","email"=>"aaaaa@.com"],
["name"=>"ls","age"=>21,"sex"=>"女","email"=>"bbbbb@.com"],
["name"=>"ww","age"=>22,"sex"=>"男","email"=>"ccccc@.com"]
];
echo '<table border="1" width="800" align="center">';
echo '<caption><h1>数组转为表格<h1></caption>';
foreach ($group as $k=> $row) {
echo '<tr>';
if(is_array($row)){
foreach ($row as $col) {
echo '<td>'.$col.'</td>';
}
}else{
echo'<td colspan="4">'.$k.':'.$row.'</td>';
}
echo '</tr>';
}
echo '</table>';
list函数遍历:
list() 函数 但这个函数和其它函数用法不同
作用: 将数组中的元素转为变量使用
1.等号左边使用list()函数, 等号右边只能是一个数组
2.数组中有几个元素,在list()中就用几个参数,而且参数必数是变量(新声明的自定义变量),不能是值
3.只能将索引数组(下标是连续), 转为变量, 是按下标0开始找的
4.可以在list()参数中通过,空项选择性的接收数组中的元素
<?php
//list以空参数接收第二个元素
list($a, ,$c)=array("龙哥","小弟","小二");
echo $a."<br>";
// echo $b."<br>";
echo $c."<br>";
//用list分割字符串,explode分割。
$str="龙哥_好帅";
list($name,$pro)=explode("_",$str);
echo $name.'<br>';
echo $pro.'<br>';
each()函数特性:
each()只是一个函数,参数就是一个数组作为参数,返回的值,也是一个数组
1.返回的值是一个数组,数组固定有4个元素,而且下标也是固定的(1(值) value(值)(0(下标) key(下标))
2.each()只处理当前的元素将当前的元素(默认当前元素是第一元素,指针指向第一个)转为数组信息,处理完后,指针向下一个元素移动
3.如果指定已经在结束位置了,如果在使用each()获取元素,返回false
<?php
$arr=["one"=>"龙哥","小弟","小二"];
//1和value都是输出值,0和key输出都是下标,下边代码只能输出第一个元素,
// $one=each ($arr);
// echo $one['key'].'=>'.$one['value'].'<br>';
// echo $one[0].'=>'.$one[1].'<br>';
echo '<pre>';
//重复使用多次命令,才能全部输出
$one=each($arr);
print_r($one);
$one=each($arr);
print_r($one);
$one=each($arr);
print_r($one);
//数组元素已经没了,在输出只能返回false
$one=each($arr);
var_dump($one);
echo '</pre>';
使用list()、each()和while循环遍历数组:
<?php
$arr=["one"=>"龙哥","小弟","小二","four","five"];
while(list($key,$val)=each($arr)){
// echo '<pre>';
// print_r($tmp);
// echo '</pre>';
// echo "{$tmp['key']}=>{$tmp['value']}<br>";
// echo "{$tmp['0']}=>{$tmp['1']}<br>";
echo "{$key}=>{$val}<br>";
echo '<br>';
}
使用数组的内部指针控制函数遍历数组:
控制指定的位置
next(); //下一个
prev(); //上一个
reset();//第一个
end(); //最后一个
each(); --- next()
key() 获取当前下标
current() 获取当前的值
$arr =array("one"=>"龙哥","two"=>"小弟","three"=>"观众","four"=>"小四","5"=>"five");
// next($arr);
// next($arr);
// next($arr);
end($arr);
prev($arr);
reset($arr);
echo "当前的位置(默认在第一个):".key($arr)."=>".current($arr)."<br>";