博主信息
博文 5
粉丝 0
评论 1
访问量 6405
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
数组分类、定义及遍历
不羁PHP学习笔记
原创
1472人浏览过
<?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));


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
1条评论
不羁 2018-11-29 00:36:06
不带高亮的吗
1楼
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学