批改状态:合格
老师批语:foreach 很方便,但是有些场景一定要合理选择历遍方式。
<?php// 1. 索引数组// 索引数组的键名是数值$stu = ['张三','李四','王五','赵六'];// 格式化打印输出这个数组,可以看出,其索引为数值,默认从0开始,递增1printf('<pre>%s</pre>',print_r($stu,true));// 访问是通过索引值echo $stu[0],'<br>';echo $stu[3],'<hr>';// 2. 关联数组// 关联数组的键名是字符串,取名要做到语义化$info = [ 'id'=>1001 , 'name'=>'jack' , 'sex'=>'male' , 'score'=>90 ];// 访问是通过键名访问echo $info['id'],'<br>';echo $info['sex'],'<hr>';

<?php// 1. 索引数组的创建// 先创建一个空数组$hobby = [];// 通过追加的方式向数组中添加元素$hobby[] = 'fish';$hobby[] = 'ball';$hobby[] = 'eat';$hobby[] = 'readiong';// 格式化打印此数组printf('<pre>%s</pre>',print_r($hobby,true));// 2. 关键数组的创建$info = [];$info['name'] = 'Alice';$info['hobby'] = 'writing';$info['sex'] = 'female';$info['age'] = 25;printf('<pre>%s</pre>',print_r($info,true));// 3. 多维数组的创建// 示例:创建一个二位数组$arr = [[ 'id'=>1001 , 'name'=>'Jack' , 'hobby'=>'fish'],[ 'id'=>1002 , 'name'=>'Mike' , 'hobby'=>'watch'],[ 'id'=>1003 , 'name'=>'Lisa' , 'hobby'=>'book'],[ 'id'=>1004 , 'name'=>'Tomi' , 'hobby'=>'music']];printf('<pre>%s</pre>',print_r($arr,true));// 访问其中的元素echo $arr[2]['name'];

<?php$arr = [];$arr['id'] = 1001;$arr['name'] = '老王';$arr['age'] = 58;printf('<pre>%s</pre>',print_r($arr,true));// 使用指针遍历数组// current():获得当前指针在数组中的值// key():获得当前指针在数组中的键名printf('[%s] => %s<br>',key($arr),current($arr));// next():指针下移next($arr);printf('[%s] => %s<br>',key($arr),current($arr));next($arr);printf('[%s] => %s<br>',key($arr),current($arr));// prev():指针上移prev($arr);printf('[%s] => %s<br>',key($arr),current($arr));// end():指针指向数组中的最后一个元素end($arr);printf('[%s] => %s<br>',key($arr),current($arr));// reset():复位,即指针指向数组中的第一个元素reset($arr);printf('[%s] => %s<br>',key($arr),current($arr));

<?php// 1. 使用while循环遍历$arr = [];$arr['id'] = 1001;$arr['name'] = '老王';$arr['age'] = 58;printf('<pre>%s</pre>',print_r($arr,true));while(true){printf('[%s] => %s<br>',key($arr),current($arr));if(next($arr)) continue;else break;}echo '<hr>';// 2. 使用for循环遍历reset($arr);for( $i=0 ; $i<count($arr) ; $i++ ){printf('[%s] => %s<br>',key($arr),current($arr));next($arr);}echo '<hr>';// 换一个索引数组来遍历$info = ['张三',21,'fish'];for( $i=0; $i<count($info); $i++ ){echo $info[$i].'<br>';}echo '<hr>';// 3. 使用foreach循环遍历foreach( $arr as $key => $value){echo "[$key] => $value <br>";}echo '<hr>';// 若数组中的某个元素也是一个数组,如下:对arr数组再增加一个元素$arr['hobby'] = ['fish','reading','ball'];// 先看看现在的数组printf('<pre>%s</pre><hr>',print_r($arr,true));// 现在遍历这个数组,需要判断一维数组中的元素的值是否为数组foreach( $arr as $key => $value ){echo is_array($value) ? '<pre>'.print_r($value,true).'</pre>'.'<br>' : "[$key] => $value <br>";}echo '<hr>';// 遍历二位数组$arr = [[ 'id'=>1001 , 'name'=>'Jack' , 'hobby'=>'fish'],[ 'id'=>1002 , 'name'=>'Mike' , 'hobby'=>'watch'],[ 'id'=>1003 , 'name'=>'Lisa' , 'hobby'=>'book'],[ 'id'=>1004 , 'name'=>'Tomi' , 'hobby'=>'music']];foreach( $arr as $index => $user ){foreach( $user as $key => $value ){echo "[$key] => $value <br>";}echo '<br>';}// 简化遍历这个二维数组foreach( $arr as $value ){printf( 'id = %s, name = %s, hobby = %s <br>', $value['id'], $value['name'], $value['hobby'] );}echo '<hr>';// 4. list()list( $x , $y) = [ 100 , 200];echo $x.' '.$y.'<br>';list( 'id' => $id, 'name' => $name ) = ['id' => 1001, 'name' => 'jack'];echo $id.' '.$name.'<br>';echo '<hr>';// 使用foreach+list来遍历二维数组foreach( $arr as list( 'id' => $id, 'name' => $name, 'hobby' => $hobby ) ){printf( 'id = %s, name = %s, hobby = %s <br>', $id , $name , $hobby );}




了解数组分为索引数组和关联数组,以及如何访问数组中的元素
一维数组和多维数组如何创建以及各自如何访问
利用各种循环来遍历数组,指针,while,for,foreach都可以对数组进行遍历,但是在实际开发中,foreach是用途最广的,它是不需要对指针进行复位操作的,也不需要更新循环条件,它会自动遍历。而且foreach结合list来遍历多维数组,也是非常的简便,并且foreach也能遍历对象。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号