for循環(huán)遍歷數(shù)組:
使用for遍歷數(shù)組
保證數(shù)組: 一定要是下標連續(xù)的索引數(shù)組
優(yōu)點:效率很高, 就是數(shù)組訪問方式, 只不過通過循環(huán)去取值
count(數(shù)組) 獲取數(shù)組的長度, 是數(shù)組的實際元素的個數(shù)
不足:數(shù)組下標不一定是連續(xù)的
關聯(lián)數(shù)組for循環(huán)不能遍歷出值
$arr = array("aa", "bb", "cc", "dd", "ee", "ff", "ggg", "hh");
$nums = count($arr);
for($i=0; $i < $nums; $i++) {
echo $arr[$i].'<br>';
}
缺點:for循環(huán)遍歷不出9及后面的數(shù)組,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()語法遍歷數(shù)組:
foreach(數(shù)組 as 自定義變量) {
}
數(shù)組有多少個元素秫舌, foreach就循環(huán)多少次
foreach會將數(shù)組中的元素 在每次循環(huán)中的妖,依次將元素的值給自定義的變量,在每次循環(huán)中用到這個變量足陨,即用到了當前的數(shù)組中的元素
foreach(數(shù)組 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遍歷數(shù)組應用:
實現(xiàn)將數(shù)組遍歷到表格內(nèi)
<?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>數(shù)組轉(zhuǎn)為表格<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函數(shù)遍歷:
list() 函數(shù) 但這個函數(shù)和其它函數(shù)用法不同
作用: 將數(shù)組中的元素轉(zhuǎn)為變量使用
1.等號左邊使用list()函數(shù)墨缘, 等號右邊只能是一個數(shù)組
2.數(shù)組中有幾個元素星虹,在list()中就用幾個參數(shù),而且參數(shù)必數(shù)是變量(新聲明的自定義變量)镊讼,不能是值
3.只能將索引數(shù)組(下標是連續(xù))宽涌, 轉(zhuǎn)為變量, 是按下標0開始找的
4.可以在list()參數(shù)中通過,空項選擇性的接收數(shù)組中的元素
<?php
//list以空參數(shù)接收第二個元素
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()函數(shù)特性:
each()只是一個函數(shù)褥芒,參數(shù)就是一個數(shù)組作為參數(shù)嚼松,返回的值,也是一個數(shù)組
1.返回的值是一個數(shù)組锰扶,數(shù)組固定有4個元素献酗,而且下標也是固定的(1(值) value(值)(0(下標) key(下標))
2.each()只處理當前的元素將當前的元素(默認當前元素是第一元素,指針指向第一個)轉(zhuǎn)為數(shù)組信息坷牛,處理完后罕偎,指針向下一個元素移動
3.如果指定已經(jīng)在結(jié)束位置了,如果在使用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);
//數(shù)組元素已經(jīng)沒了,在輸出只能返回false
$one=each($arr);
var_dump($one);
echo '</pre>';
使用list()痊土、each()和while循環(huán)遍歷數(shù)組:
<?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>';
}
使用數(shù)組的內(nèi)部指針控制函數(shù)遍歷數(shù)組:
控制指定的位置
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>";