当前位置: 首页 > news >正文

PHP之旅3 php数组以及遍历数组 以及each() list() foreach()

php的数组的定义

<?php
//php中定义数组时可以通过索引直接进行赋值:
$mArr[0]="哈哈";
$mArr[1]=70;
$mArr[2]='haha';
echo "下面输出的是mArr:<br/>";
var_dump($mArr);
echo "<br/>";

//也可以直接赋值,php会从0自动编码
$kArr[]="哈哈";
$kArr[]=70;
$kArr[]='haha';
echo "下面输出的是kArr:<br/>";
var_dump($kArr);
echo "<br/>";
//还可以这样写
$rArr[5]="哈哈";
$rArr[]=70;
$rArr[]='haha';
echo "下面输出的是rArr:<br/>";
var_dump($rArr);
echo "<br/>";
?>

结果:

但如果定义了两个相同的索引,那前面那个值将会被覆盖掉。可以自己尝试一下。

 数组的遍历:

foreach();

php的数组遍历可以通过for和while循环进行遍历,还可以有foreach进行,表达式有两种,分别是:

foreach(数组名  as  元素名){

    语句块;

}

或者:

foreach(数组名 as 键名 => 元素名){

     语句块;

}

两个有些不同,可以通过下面的例子看出:如果数组是键值对的话只能将数组中的键值对的值获取到,第二种方法是可以将key也获取到。

eg:

<?php

$name = array('张三' => '姓张','李四'=>'姓李','王二'=>'姓王','赵一'=>'姓赵');

foreach ($name as $value) {
    echo "第一次的结果::".$value."<br/>";
}


foreach ($name as $key => $value) {
    echo "第二次的结果::"."key的值是:"."$key".",并且value的值为:"."$value<br/>";
}
?>

结果是:

list()进行遍历数组

list()并不是真正的函数,和array[]一样,是一种语言结构,list()只能用于下标从0开始的索引数组。

void list(mixed $var , mixed $...)

 

eg:

<?php
$mArr=["张三",20,'男','1998年出生'];

list($name,$age,$sex) = $mArr;

echo $name.' '.$age.' '.$sex;
?>

结果:

可以看出list()是直接取得mArr的从下边为了、0开始的前三个值

each()遍历数组

 each()用于返回数组中当前的键值对,并将数组指针向前移动一步。语法格式:

array each(array $var);

eg:

<?php
$mArr=["张三",20,'男','1998年出生'];

$arr = each($mArr);
echo "<br/>";
var_dump($arr);


$arr = each($mArr);
echo "<br/>";
var_dump($arr);


$arr = each($mArr);
echo "<br/>";
var_dump($arr);


$arr = each($mArr);
echo "<br/>";
var_dump($arr);
?>

结果为:

返回4个单元的数组,键名为0、1、key、value。单元0和key包含数组的键名,1和value办函数组元素的值如果指针越界,则each()返回FALSE。

混合使用list()与each()遍历数组:

eg:

<?php
$mArr=["张三",20,'男','1998年出生'];

while (list($key,$value) = each($mArr)) {
    echo  $key."=>".$value;
    echo "<br/>";
}
?>

结果如下:

二维数组就以及遍历就是按照上面的方法进行嵌套。

 

转载于:https://www.cnblogs.com/carlos-mm/p/8777003.html

相关文章:

  • Spring配置activemq异步消息监听器
  • HTML起步——学习2
  • 1.Zabbix 3.0 基础
  • bzoj4823[CQOI2017]老C的方块
  • 工资计算(用SQL来计算)
  • 电梯演说模板练习
  • 优达学城-并行编程-Unit2 硬件内存
  • ajax,json
  • 修饰符
  • 网络中数据的传输过程
  • 如何把你的Windows PC变成瘦客户机
  • codevs 1086 栈(Catalan数)
  • Java设计模式---策略模式
  • 2017BUPT校赛 H-Black-white Tree
  • hibernate之复合主键作为外键的相关配置
  • SegmentFault for Android 3.0 发布
  • @angular/forms 源码解析之双向绑定
  • 《Java编程思想》读书笔记-对象导论
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • AHK 中 = 和 == 等比较运算符的用法
  • Java多态
  • JSDuck 与 AngularJS 融合技巧
  • MaxCompute访问TableStore(OTS) 数据
  • MySQL的数据类型
  • 翻译:Hystrix - How To Use
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 深入浅出Node.js
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 写给高年级小学生看的《Bash 指南》
  • 新版博客前端前瞻
  • - 转 Ext2.0 form使用实例
  • Android开发者必备:推荐一款助力开发的开源APP
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​什么是bug?bug的源头在哪里?
  • #define 用法
  • #大学#套接字
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (二)丶RabbitMQ的六大核心
  • (分布式缓存)Redis哨兵
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • ../depcomp: line 571: exec: g++: not found
  • .gitignore文件—git忽略文件
  • .net web项目 调用webService
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • ?
  • @KafkaListener注解详解(一)| 常用参数详解