Blogger Information
Blog 5
fans 0
comment 1
visits 5421
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数组分类、定义及遍历
不羁PHP学习笔记
Original
1305 people have browsed it
<?php
$codes = '<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>数组遍历</title>
    <style type="text/css">
        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;}
    </style>
</head>
<body>
    <h1>数组遍历</h1>
</body>
</html>';
echo ($codes);
/**
 * 课程内容
 * 1.数组分类
 * 2.数组定义
 * 3.数组遍历
 */

/**
 * 一、数组分类
 * 1.数组是由一组有序的值或键值对组成的数据结构
 * 2.数组根据键名类型分为:索引数组 与 关联数组 二大类
 * 3.索引数组:键名是元素的位置索引,默认从0开始,采用系统自动处理可以省略键名
 * 4.关联数组:键名是自定义的字符串,类似于对象中的属性列表
 */

//索引数组: 采用字面量直接定义
//降龙十八掌,前六招,能接住这前六招,当今武林,恐怕不会超过五人,目前已经够用了
$arts = ['亢龙有悔', '飞龙在天', '见龙在田', '鸿渐于陆', '潜龙勿用', '突如其来'];

//关联数组: 采用字面量直接定义
$swordsman = ['name'=>'郭靖', 'position'=>'金刀驸马', 'skill'=>'降龙十八掌'];
foreach ($swordsman as $key => $value) {
    # code...
    echo $key."=》".$value."<br>";
}
echo "<hr>";
/**
 * 二、数组定义
 * 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<count($arts); $i++){//count()数组元素个数
     $res1 .= $arts[$i].',';//  .=  连接字符串
     echo $res1,"<br>";
}
echo rtrim($res1, ','), '<hr>';//rtrim()字符串函数:去掉最右边指定字符


//2.while
$res2 = '';
$i = 0;
while ($i < count($arts)) {
    $res2 .= $arts[$i].'<a>-</a>';
    echo $res2,"<br>";
    $i++;
}
echo rtrim($res2, '<a>-</a>'), '<hr>';


//3.foreach()
foreach ($swordsman as $key=>$value)
{
    echo $key,'=>',$value,'<br>';
}

echo "<hr><h3 style = 'color:red;'>测试each</h3><br>";
/**
 * 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 "<hr><h5 style = 'color:red;'>list()和each()完成遍历数组,上面遍历过,指针需要复位,使用reset()函数</h5><br>";
reset($swordsman);
while(list($key, $value) = each($swordsman)){
    echo $key,'=>',$value,'<br>';
}
echo "<hr>";

/**
 * 5.内部指针
 * (1)current():当前指针指向元素的值
 * (2)key(): 当前指针指向元素的键名/索引
 * (3)next(): 指针后移
 * (4)prev(): 指针前移
 * (5)end(): 指针移到尾部最后一个元素上
 * (6)reset(): 指针复位,指向第一个元素
 */

//指针复位
reset($arts);

//获取第一个元素的键值
echo key($arts),'---',current($arts),'<br>';

//后移一位,获取第二个元素的键值
next($arts);
echo key($arts),'---',current($arts),'<br>';

//前移一位
prev($arts);
echo key($arts),'---',current($arts),'<br>';

//移到最后,获取最后一个元素的键值
end($arts);
echo key($arts),'---',current($arts),'<br>';

//下面我们用for()循环与数组指针配合来完成关联数数组的遍历

echo '<hr>';
//记得先复位数组指针,从头开始遍历
reset($arts);

for ($i=0; $i<count($arts); $i++) {
    //输出当前元素的键值
    echo key($arts),'---',current($arts),'<br>';

    //指针后移一位
    next($arts);
}

//使用while循环配置指针进行遍历
echo '<hr><h5 style = "color:red";>使用入口判断型,会导致第一招丢失</h5><br>';
reset($arts);

//使用入口判断型,会导致第一招丢失
while (next($arts)) {
    echo key($arts),'---',current($arts),'<br>';
}
echo '<hr><h5 style = "color:red";>使用入口判断型另一种方法</h5><br>';
reset($arts);

//使用入口判断型另一种方法
while (current($arts)) {
    echo key($arts),'<===>',current($arts),'<br>';
    next($arts);
}
//应该使用出口判断结构: do ~ while()
echo '<hr><h5 style = "color:red";>使用出口判断结构: do ~ while()</h5><br>';
reset($arts);

do {
    echo key($arts),'---',current($arts),'<br>';
} while (next($arts));


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
1 comments
不羁 2018-11-29 00:36:06
不带高亮的吗
1 floor
Author's latest blog post