foreach的基本语法
我们通过上一章的内容学会了遍历连续下标的索引数组。可是,我们发现我们遍历不了关联数组,也遍历不了下标不连续的索引数组。
那我们其实在学循环的时候,有一个布尔型循环是专门用来循环数组的。这个循环的基本语法就是foreach基本语法。
语法格式如下:
foreach( 要循环的数组变量 as [键变量 =>] 值变量){ //循环的结构体 }
遍历关联数组
这是一个固定用法,将要循环的数组放进去。
as 是一个固定的关键字
后面的键变量是可选的,随意定义一个变量,每次循环的时候,foreach这个语法会把键取出来赋值到键变量里面
后面的值变量是必填的。每次循环的时候,会把值放到值变量里面。
我们下面用代码来举例子,加强对这个语法的理解。
<?php $data = [ 'fj' => '凤姐', 'fr' => '芙蓉', ]; foreach($data as $key => $value){ echo $key . '-------' . $value . '<br />'; } //如果我们只想读取值的话,就可以把下面的$key => 给删除掉,读取的时候,就只读取值了。做完上面的实验,你可以打开下面的代码再实验几次。 /* foreach($data as $value){ echo $value . '<br />'; } */ ?>
我们运行一下看看结果:
通过上面的运行结果我们得出下面的结果:
1.每次循环的时候,把下标赋值给了变量$key,把值的变量赋值给了变量$value
2.循环一次读一次键和值。如上例中,读完“凤姐”再读取“芙蓉”,读到最后,发现没有可以读取的数组元素后,停止循环遍历数据。
注意:$key 和$value并不是变量名必须得为这两个名字。你命名为其他的也可以,如 $kai => $wen是一样的。 你要清楚键赋值给了哪个变量,值赋值给了另外的哪个变量。
遍历索引数组
foreach还挺好学的。因此,我们可以通过foreach遍历连续的索引数组,如下例:
<?php $data = array( 0 => '中国', 100 => '美国', 20 => '韩国', 300 => '德国', ); //待会儿可以自己做做实验,循环遍历一下下面的这个数组 //$data = array(1,2,3,4,5,6,7,8,9,10); foreach($data as $k => $v){ echo $k . '------' . $v .'<br />'; } ?>
运行看一下结果:
按照foreach的结果推理与刚刚做的关联数组的结果是一样的。
不同的是不连续的索引数组。每读一次数组的元素,将当次循环的下标赋值给了变量$k,值赋值给了变量$v。每读将键和值输出,然后显示出来。循环一次向后移动一次下标。读取至最后,退出执行。
遍历多维数组
数组当中还有一个数组我们该怎么遍历呢?我们来做一个实验:
<?php $data = array( 0 => array( '中国' => 'china', '美国' => 'usa', '德国' => ' Germany', ), 1 => array( '湖北' => 'hubei', '河北' => 'hebei', '山东' => 'shandong', '山西' => 'sanxi', ), ); //注:我们在使用foreach循环时,第一次循环将键为0和键为1的两个数组赋值给一个变量($value)。然后,再套一个循环遍历这个$value变量,$value中的值取出来,赋值给$k和$v。 foreach($data as $value){ //第一次循环把国家的数组赋值给了$value //第二次循环把中国的省份的数组又赋值给了$value //因此,我在循环的时候把$value再遍历一次 foreach($value as $k => $v){ echo $k . '-----' . $v .'<br />'; } //为了看的更清晰,我在中间加上华丽丽的分割线方便你来分析 echo '----------分割线-----------<br />'; } ?>
结果就出来了哟:
总结:
第一次循环的时候,将数组赋值给了$value,然后用foreach循环$value。将二维的子数组中的键给到$k,值赋值给变量$v。
第一次循环退出子数组的循环,执行后续代码显示分割线。
依此类推,第二次循环也是这样。
作业
将如下数组:
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); ?>
遍历显示出来,效果如下:
总结:
1.第一次循环的时候,将数组赋值给了$value,然后用foreach循环$value。将二维的子数组中的键给到$k,值赋值给变量$v。
2.第一次循环退出子数组的循环,执行后续代码显示分割线。
3.依此类推,第二次循环也是这样。
泡泡6年前
foreach($arr as $key => $value){ echo $key.'<br>'; foreach($value as $values){ foreach($values as $key => $v){ echo $v; } }
foreach($arr as $bumen){ foreach($bumen as $gongren ){ foreach($gongren as $jieshao){ echo $jieshao.''; } echo ''; }
叡2年前
foreach($arr as $key => $value){ echo '---------'.$key.'-------'.''; foreach($value as $a){ echo '.'.''; foreach($a as $k => $v){ echo $k .'----'. $v .''; } } }叡
邵星星3年前
foreach($arr as $key => $onewei){ echo '---------'.$key.'-------'; foreach($onewei as $twowei){ foreach($twowei as $k => $v){ echo $k .'----'. $v .''; } echo '---分割线---'; } }
HAHAH**4年前
标准输出格式: 教学部 : 李某 18 人妖 高某 20 男 张某 21 妖人 ================================== 宣传部 : 李某 18 人妖 高某 20 男 张某 21 妖人 ================================== 财务部 : 李某 18 人妖 高某 20 男 张
Apollo4年前
答案 foreach ($arr as $value){ foreach($value as $value){ foreach ($value as $value) { echo $value."\n"; } }
谢单单5年前
foreach($arr as $k => $v){ echo $k.'<br>'; foreach($v as $kk => $vv){ foreach($vv as $kkk => $vvv){ echo $vvv.','; } echo '<br /&
简单5年前
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('
简单5年前
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('
peach5年前
李某18人妖 高某20男 张某21妖人 ---------教学部分割线---------- 李某18人妖 高某20男 张某21妖人 ---------宣传部分割线---------- 李某18人妖 高某20男 张某21妖人 ---------财务部分割线----------
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'),
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'),
′─*Ab君5年前
$arr=array( '教学部'=>array( array('姓名'=>'李某','年龄'=>'18','性别'=>'人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖
陶小陶5年前
foreach($arr as $key=>$item){ echo "---------".$key."---------<br>"; foreach($item as $i){ foreach($i as $key=>$a){ echo $a; }
吒哪4年前
1.foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。 <?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value <br>";} ?>$value是当前指针所指数组元素的值
0
雨觞4年前
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); foreach($arr as $dept){ foreach($dept as $name){ foreach($name as $k=>$people){ if($k==0){ $k="姓名"; echo $k."--------".$people."<br>"; } if($k==1){ $k="年龄"; echo $k."--------".$people."<br>"; } if($k==2){ $k="性别"; echo $k."--------".$people."<br>"; } } echo "-------分割线--------"."<br>"; } } ?>
0
rock4年前
<?php $zuoye = [ '教学部' => [ ['李某','18','人妖'], ['高某','18','男'], ['张某','18','女'] ], '宣传部' => [ ['李某','18','人妖'], ['高某','18','男'], ['张某','18','女'] ], '财务部' => [ ['李某','18','人妖'], ['高某','18','男'], ['张某','18','女'] ], ]; foreach ($zuoye as $value) { # code... foreach ($value as $valueer) { # code... foreach ($valueer as $key => $valuesan) { # code... echo $key.'---------'.$valuesan.'<br />'; } } echo '<hr />'; }; ?>
0
桃子味伏特加5年前
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); foreach($arr as $key=>$value){ echo '<br/>'.$key; echo '</br>'.'------------------------------'; foreach($value as $dier){ echo'</br>'; foreach($dier as $disan){ echo $disan.'----'; } } } ?>
0
小野呀5年前
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); foreach($arr as $key=>$value){ echo $key; foreach ($value as $k => $v) { echo "<br>"; foreach ($v as $a=>$b) { echo $b."-"; } } echo "<br>-------------------------------------------<br>"; } ?>
0
谢单单5年前
foreach($arr as $k => $v){ echo $k.'<br>'; foreach($v as $kk => $vv){ foreach($vv as $kkk => $vvv){ echo $vvv.','; } echo '<br />'; } echo '----------分割线-----------<br />'; }
0
城南花已开5年前
$arr[财务部][4]=['石某','60','老人']; unset($arr[宣传部][2]); $arr[教学部][0][2]='女'; foreach($arr as $key=>$value){ echo $key.'<br/>'; foreach($value as $k=>$v){ foreach($v as $a=>$b){ echo $b; } echo '<br/>'; } echo '------分割线------'.'<br/>'; } echo '</table>';
0
筱笋尖5年前
foreach($arr as $bum => $b){ echo $bum.'<br />'; foreach($b as $bh => $ren){ echo $bh.'--'; foreach($ren as $xx){ echo '-'.$xx; } echo '<br />' ; } }
0
简单5年前
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); foreach($arr as $key => $value){ echo "<h2>".$key."</h2></br>"; foreach($value as $k => $v){ for($i=0;$i<count($v);$i++){ echo $v[$i]." "; } echo "</br>"; } } ?>
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); foreach($arr as $key => $value){ echo "<h2>".$key."</h2></br>"; foreach($value as $k => $v){ for($i=0;$i<count($v);$i++){ echo $v[$i]." "; } echo "</br>"; } } ?>
0
peach5年前
foreach( $arr as $y =>$v){ foreach($v as $k ){ echo '<br>'; foreach($k as $a){echo $a; }; }; echo '<br>'.'---------'.$y.'分割线----------'.'<br>'; };
0
waiting for.5年前
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); foreach($arr as $k=>$value){ echo $k.'<br/>'; foreach($value as $k2=>$v){ echo '<br/>'; foreach($v as $k3=>$v3){ echo $k3.'-----'.$v3.'<br/>'; } } echo '---------分割线-----------<br/>'; } ?>
0
foreach( 要循环的数组变量 as [键变量 =>] 值变量){ //循环的结构体 } 1.每次循环的时候,把下标赋值给了变量$key,把值的变量赋值给了变量$value 2.循环一次读一次键和值。如上例中,读完“凤姐”再读取“芙蓉”,读到最后,发现没有可以读取的数组元素后,停止循环遍历数据。 注意:$key 和$value并不是变量名必须得为这两个名字。你命名为其他的也可以,如 $kai => $wen是一样的。 你要清楚键赋值给了哪个变量,值赋值给了另外的哪个变量。
按照foreach的结果推理与刚刚做的关联数组的结果是一样的。 不同的是不连续的索引数组。每读一次数组的元素,将当次循环的下标赋值给了变量$k,值赋值给了变量$v。每读将键和值输出,然后显示出来。循环一次向后移动一次下标。读取至最后,退出执行。 总结: 第一次循环的时候,将数组赋值给了$value,然后用foreach循环$value。将二维的子数组中的键给到$k,值赋值给变量$v。 第一次循环退出子数组的循环,执行后续代码显示分割线。 依此类推,第二次循环也是这样。
0