6.3.4 list()函数的语法结构
联合使用list( )、each( )和while循环遍历数组
•array each ( array array)
返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
如果内部指针越过了数组的末端,则 each() 返回 FALSE。
each() 经常和list( ) 结合使用来遍历数组。
•void list ( mixed ...)
–它不是真正的函数,而是语言结构。list() 用一步操作给一组变量进行赋值。
注: list() 仅能用于数字索引的数组并假定数字索引从0开始。
–在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用reset( )。
<?php
//声明一个数组$contact作为each()函数的参数
$contact = **array**("ID" => 1, "姓名" => "高某", "公司" => "A公司", "地址" => "北京市" );
$id = each($contact); //返回数组$contact中第一个元素的键/值对,是带有4个元素的数组
print_r($id); //输出数组$id:Array ( [1] => 1 [value] => 1 [0] => ID [key] => ID)
$name = each($contact); //返回数组$contact中第二个元素的键/值对,是带有4个元素的数组
print_r($name); //输出Array ( [1] => 高某 [value] => 高某 [0] => 姓名 [key] => 姓名)
$info = **array**('coffee', 'brown', 'caffeine'); //声明一个索引数组$info
**list**($drink, $color, $power) = $info; //将数组中的所有元素转为变量
**echo** "**$drink** is **$color** and **$power** makes it special.\n"; //三个变量值是数组中三个元素的值
**list**($drink, , $power) = $info; //将数组中的部分元素转换为变量
**echo** "**$drink** has **$power**.\n"; //两个变量值是数组中前两个元素的值
**list**( , , $power) = $info; //跳过前两个只将数组中第三个元素转为变量
**echo** "I need **$power**!\n"; //输出的一个变量值是数组中第三个元素的值
test.php
<?php
/*
* 使用for遍历数组
*
*
* 保证数组: 一定要是下标连续的索引数组
*
* 优点:
*
* 效率很高, 就是数组访问方式, 只不过通过循环去取值
*
* count(数组) 获取数组的长度, 是数组的实际元素的个数
*
*不足:
1. 数组下标不一定是连续的
* 2. 关联数组for 不能遍历出值
*
*
foreach() 语法
1.
foreach(数组 as 自定义变量) {
}
一、 数组有多少个元素, foreach就循环多少次
二、foreach会将数组中的元素 在每次循环中, 依次将元素的值给自定义的变量, 在每次循环中用到这个变量,即用到了当前的数组中的元素
2.
foreach(数组 as 下标变量 => 值变量) {
}
*
*/
/* $arr = array("one"=>"aa", "bb", "three"=>"cc", "dd", 9=>"ee", "ff", "four"=>"ggg", "hh", "xxx", "yyy", "zz");
foreach($arr as $kk => $vv) {
echo "{$kk} =============> {$vv} <br>";
}
*/
/*
$group = [
"name"=>"第三组",
"price"=>888,
["name"=>"zs", "age"=>20, "sex"=>"男", "email"=>"aaa@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ww", "age"=>22, "sex"=>"男", "email"=>"cccc@bbb.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() 函数 但这个函数和其它函数用法不同
*
*
* 作用: 将数组中的元素转为变量使用
*
* 1. 等号左边使用list()函数, 等号右边只能是一个数组
*
* 2. 数组中有几个元素, 在list()中就用几个参数,而且参数必数是变量(新声明的自定义变量), 不能是值
*
* 3. 只能将索引数组(下标是连续), 转为变量, 是按下标0开始找的
*
* 4. 可以在list()参数中通过,空项选择性的接收数组中的元素
*
*/
/*
list($a, , $c) = array("妹子", "峰哥", "第三者");
echo $a."<br>";
// echo $b."<br>";
echo $c."<br>";
$str="峰哥_好帅";
list($name,$pro) = explode("_", $str);
echo $name.'<br>';
echo $pro.'<br>';
*/