$codes = 'html>
数组遍历h1{margin: 0px;color: red;background: #ccc;}
h3{margin: 0px;color: red;background: #ccc;}
h5{margin: 0px;color: red;background: #ccc;}
body{font-size: 24px;color: #ccc;}
数组遍历
';
echo ($codes);
/**
* 课程内容
* 1.数组分类
* 2.数组定义
* 3.数组遍历
*/
/**
* 一、数组分类
* 1.数组是由一组有序的值或键值对组成的数据结构
* 2.数组根据键名类型分为:索引数组 与 关联数组 二大类
* 3.索引数组:键名是元素的位置索引,默认从0开始,采用系统自动处理可以省略键名
* 4.关联数组:键名是自定义的字符串,类似于对象中的属性列表
*/
//索引数组: 采用字面量直接定义
//降龙十八掌,前六招,能接住这前六招,当今武林,恐怕不会超过五人,目前已经够用了
$arts = ['亢龙有悔', '飞龙在天', '见龙在田', '鸿渐于陆', '潜龙勿用', '突如其来'];
//关联数组: 采用字面量直接定义
$swordsman = ['name'=>'郭靖', 'position'=>'金刀驸马', 'skill'=>'降龙十八掌'];
foreach ($swordsman as $key => $value) {
# code...
echo $key."=》".$value."
";
}
echo "
";
/**
* 二、数组定义
* 1. 整体定义: $arr = [...]
* 2. 逐个定义: $arr[] = ...
* 3. 数组元素可以是字面量,也可以变量,甚至还可以是数组,从而创建多维数组
*/
//整体定义,参照上面的案例
//逐个定义:以添加的方式的来创建数组
$postion = '金刀驸马';
$swordsman = []; //可选,推荐写上
$swordsman['name'] = '郭靖'; //用追加的方式,用字面量初始化元素
$swordsman['course'] = $postion; //用变量初始化元素
$swordsman['skill'] = '降龙十八掌';
/**
* 三、数组遍历
* 1. for()循环:适合遍历索引数组
* 2. while()循环
* 3. foreach()循环: 数组专用,强烈推荐
* 4. list(),each(),while()配合完成的遍历,因为each()已不再推荐,所以不再学习
* 4. 内部指针
*/
//1.for
$res1 = '降龙十八掌招式:';
for ($i=0; $i
$res1 .= $arts[$i].',';// .= 连接字符串
echo $res1,"
";
}
echo rtrim($res1, ','), '
';//rtrim()字符串函数:去掉最右边指定字符
//2.while
$res2 = '';
$i = 0;
while ($i
$res2 .= $arts[$i].'-';
echo $res2,"
";
$i++;
}
echo rtrim($res2, '-'), '
';
//3.foreach()
foreach ($swordsman as $key=>$value)
{
echo $key,'=>',$value,'
';
}
echo "
测试each
";
/**
* 4.list(),each(),while()遍历
* list($var1,$var2,...) = [value1, value2,....]:将索引数组中的值,依次赋给list()中的变量
* each($arr):将数组中的每个元素,拆分键和值二部分,并分别以索引和关联二种方式返回
*/
//测试each()
$arr = [100,'name'=>'peter'];
$temp = each($arr);
print_r($temp);
$temp = each($arr);
print_r($temp);
//
echo "
list()和each()完成遍历数组,上面遍历过,指针需要复位,使用reset()函数
";
reset($swordsman);
while(list($key, $value) = each($swordsman)){
echo $key,'=>',$value,'
';
}
echo "
";
/**
* 5.内部指针
* (1)current():当前指针指向元素的值
* (2)key(): 当前指针指向元素的键名/索引
* (3)next(): 指针后移
* (4)prev(): 指针前移
* (5)end(): 指针移到尾部最后一个元素上
* (6)reset(): 指针复位,指向第一个元素
*/
//指针复位
reset($arts);
//获取第一个元素的键值
echo key($arts),'---',current($arts),'
';
//后移一位,获取第二个元素的键值
next($arts);
echo key($arts),'---',current($arts),'
';
//前移一位
prev($arts);
echo key($arts),'---',current($arts),'
';
//移到最后,获取最后一个元素的键值
end($arts);
echo key($arts),'---',current($arts),'
';
//下面我们用for()循环与数组指针配合来完成关联数数组的遍历
echo '
';
//记得先复位数组指针,从头开始遍历
reset($arts);
for ($i=0; $i
//输出当前元素的键值
echo key($arts),'---',current($arts),'
';
//指针后移一位
next($arts);
}
//使用while循环配置指针进行遍历
echo '
使用入口判断型,会导致第一招丢失
';
reset($arts);
//使用入口判断型,会导致第一招丢失
while (next($arts)) {
echo key($arts),'---',current($arts),'
';
}
echo '
使用入口判断型另一种方法
';
reset($arts);
//使用入口判断型另一种方法
while (current($arts)) {
echo key($arts),'<===>',current($arts),'
';
next($arts);
}
//应该使用出口判断结构: do ~ while()
echo '
使用出口判断结构: do ~ while()
';
reset($arts);
do {
echo key($arts),'---',current($arts),'
';
} while (next($arts));