PHP基础-数组
一、数组的概述
* 1. 数组的本质:管理和操作一组变量,成批处理
* 2. 数组是复合类型
* 3. 数组中可以存储任意长度的数据,也可以存储任意类型的数据
* 4. 数组就可以完成其它语言数据结构的功能(链表, 队列, 栈, 集合类)
*
* 二、数组的分类
* 数组中存有多个单元,(单元称为元素)
* 每个元素(下标[键]和值)
* 单访问元素时候,都是通过下标(键)来访问元素
*
* 1. 一维数组, 二维数组, 三维数组 。。。 多维数组
* (数组的数组, 就是在数组中存有其它的数组)
* 2. PHP中有两种数组
* 索引数组:就是下标是顺序整数作为索引
* 关联数组:就是下标是字符串作为索引
*
* 下标(整数, 字符串)只有这两种
*
* 三、数组多种声明方式
* 1. 直接为数组元素赋值
a.如果索引下标不给出,就会从0开始顺序索引
b.如果给出索引下标,下一个就会是从最大的开始增1
c.如果后面出现前面的下标,如果是赋值就是为前面的元素重新赋值
d. 混合声明时,索引和关联不互相影响(不影响索引下标的声明)
* 2. 使用array()函数
a. 默认是索引数组
b.如果为关联数组和索引数组指定下标,使用 键=>值
c.多个成员之前使用“,”分割
3. 使用其它的函数声明
* file();
四、 数组的遍历
*
1. 使用for语句循环遍历数组
a. 其它语言(只有这一种方式)
b. PHP中这种方式不是我们首选方式
c. 数组必须是索引数组,而且下标还必须是连续的
(索引数组下标还可以不连序,数组还有关联数组)
2. 使用foreach语句循环遍历数组
foreach(数组变量 as 变量值){
//循环体
}
a. 循环次数由数组的元素个数决定
b. 每一次循环都会将数组中的元素分别赋值给后面变量
foreach(数组变量 as 下标变量=> 值变量){
}
例子:
1 <?php
2 $info=array(
3 "user"=>array(
4 //$user[0]
5 array(1, "zansan", 10, "nan"),
6 //$user[1][1]
7 array(2, "lisi", 20, "nv"), //$user[1]
8 //$user[2]
9 array(3, "wangwu", 30, "nan")
10 ),
11 "score"=>array(
12 array(1, 100, 90, 80),
13 array(2, 99, 88, 11),
14 array(3, 10, 50, 88)
15 ),
16 "connect"=>array(
17 array(1, '110', 'aaa@bbb.com'),
18 array(2, '120', 'bbb@ccc.com'),
19 array(3, '119', 'ccc@ddd.com')
20 )
21 );
22
23
24 foreach($info as $tablename=>$table){
25 echo '<table align="center" width="500" border="1">';
26 echo '<caption><h1>'.$tablename.'</h1></caption>';
27 foreach($table as $row){
28 echo '<tr>';
29 foreach($row as $col){
30 echo '<td>'.$col.'</td>';
31 }
32 echo '</tr>';
33 }
34 echo '</table>';
35 }
3. while() list() each() 组合循环遍历数组
*
* each()函数,
a. 需要一个数组作为参数
b. 返回来的也是一个数组
c. 返回来的数组是0, 1, key, value四个下标(固定的)
0和key下标是当前参数数组元素的鍵
1和value下标是当前数组元素的值
d. 默认认当前元素就是第一个元素
e. 每执行一次后就会将当前元素向后移动
f. 如果到最后的元素再执行这个函数,则返回false
*
* //Array ( [1] => 1 [value] => 1 [0] => id [key] => id )
*
$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
while($arr=each($user)){
//echo $arr[0]."==>".$arr[1]."<br>";
echo $arr["key"]."---->".$arr["value"]."<br>";
}
* list()函数
a. list()=array(); 需要将一个数组赋值给这个函数
b. 数组中的元素个数,要和list()函数中的参数个数相同
c. 数组中的每个元素值会赋值list()函数中的每个参数,list()将每个参数转为变量
d. list()只能接收索引数组
e. 按索引的下标的顺序
list($name, $age, $sex)=array("zansan", 10, "nnnnn");
echo $name."<br>";
echo $age."<br>";
echo $sex."<br>";
list($name, , $sex)=array("zansan", 10, "nnnnn");
echo $name."<br>";
echo $sex."<br>";
$ip="192.168.1.128";
list(, , , $d)=explode(".", $ip);
echo $d;
$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
while($arr=each($user)){
//echo $arr[0]."==>".$arr[1]."<br>";
echo $arr["key"]."---->".$arr["value"]."<br>";
}
$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
while(list($key, $value)=each($user)){
echo $key."==>".$value."<br>";
}
使用数组的内部指针控制函数
next(数组);
prev(数组);
reset(数组)
end(数组);
current(数组);
key(数组);
$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
while(list($key, $value)=each($user)){
echo $key."==>".$value."<br>";
}
reset($user);
while(list($key, $value)=each($user)){
echo $key."==>".$value."<br>";
}
reset($user);
next($user);
next($user);
while(list($key, $value)=each($user)){
echo $key."==>".$value."<br>";
}
reset($user);
echo current($user)."===========>".key($user)."<br>";
end($user);
echo current($user)."===========>".key($user)."<br>";
prev($user);
echo current($user)."===========>".key($user)."<br>";
PHP基础-数组的更多相关文章
- 【搬砖】安卓入门(4)- Java开发编程基础--数组
05.01_Java语言基础(数组概述和定义格式说明)(了解) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. ...
- PHP基础 数组函数 的总结
<?php /** * PHP基础 数组操作函数 * * 指针函数:[类似于数据库的游标] 见例1.1 * current($arr)/pos 返回当前指针指向的元素 * key($arr) 返 ...
- Java基础——数组应用之StringBuilder类和StringBuffer类
接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...
- java基础-数组的折半查找原理
java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...
- Java基础-数组常见排序方式
Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...
- day05<Java语言基础--数组>
Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...
- Java语言基础(数组)
Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...
- 算法与数据结构基础 - 数组(Array)
数组基础 数组是最基础的数据结构,特点是O(1)时间读取任意下标元素,经常应用于排序(Sort).双指针(Two Pointers).二分查找(Binary Search).动态规划(DP)等算法.顺 ...
- Java编程基础——数组和二维数组
Java编程基础——数组和二维数组 摘要:本文主要对数组和二维数组进行简要介绍. 数组 定义 数组可以理解成保存一组数的容器,而变量可以理解为保存一个数的容器. 数组是一种引用类型,用于保存一组相同类 ...
- 《Java基础——数组的定义与使用》
Java基础--数组的定义与使用 一. 一维数组: 格式一: 数组类型 数组变量[]=new 数据类型[长度]; //需要后续赋值,且后续赋值时只能为单个元素赋值. 或 数组类型 数组变量 ...
随机推荐
- Elasticsearch 单字符串多字段查询
前言 有些时候,我们搜索的时候,只会提供一个输入框,但是会查询相关的多个字段,典型的如Google搜索,我们该如何用 Elasticsearch 如何实现呢? 实例 从单字符串查询的实例说起 创建测试 ...
- python 实现输出一个等腰三角形
这个问题实际上是一个数学问题,我们主要找出每行的规律就可以根据规律来书写代码 """ 2 代码实现输出一个等腰三角形,实际上就是一个等差数列求各项的一个数学> 问题 ...
- Android Studio 之生成正式签名的 APK 文件
生成 APK 文件 •步骤 点击 Build -> Generate Signed...... : 来到如下界面: 选择 APK 选项,点击 Next 来到如下界面: 如果你电脑上没有一个正式 ...
- 痞子衡嵌入式:关于恩智浦入驻B站的一些思考
故事起源于这周五的一封公司邮件,标题是"恩智浦B站首支原创视频播放量破万",公司Marcom部门特地群发了这个邮件给全体员工,并鼓励大家积极DIY工作相关的有趣视频,为公司这个萌新 ...
- 02_利用numpy解决线性回归问题
02_利用numpy解决线性回归问题 目录 一.引言 二.线性回归简单介绍 2.1 线性回归三要素 2.2 损失函数 2.3 梯度下降 三.解决线性回归问题的五个步骤 四.利用Numpy实战解决线性回 ...
- OOUnit1Summary
一.前三次作业内容分析 前言 第一单元的作业以表达式求导为主题,分三次要求逐步增加,难度逐步提高.这三次作业下来,本人既有收获,也有遗憾,因此通过接下来的内容对我这三次作业进行分析和总结,希望能能为我 ...
- 数据库MySQL六
介绍什么是JDBC JAVA SE也有 提高综合篇 JDBC(Java Database Connectivity) :java和数据库的连接技术,sun公司推出的一套java应用程序访问数据库的技术 ...
- Java第三章基础学习课后题练习
小结:final 类型 变量名 = 数值 定义常量使用 变量的原则*** 一定要"先声明,后使用",变量使用前必须先声明.这点就没php好玩:两种键盘输入方式InputStream ...
- C++运算符重载的一些困惑
一.背景 在复习<C++基础与提高>时,自己实现运算符重载(i++)时,几次都报错.其实还是自己对运算符重载这一部分内容理解得不够透彻,于是再次看了下书上的内容,理解算是加深了一些,于是提 ...
- BLE链路层状态机初探
状态机 BLE链路层把所有的功能放到五种不同的状态中,在不同的状态分别执行不同的功能. 一般来说,BLE设备大致有这么几种状态:空闲,广播,扫描,发起连接和连接成功. 广播和扫描是相对应的,一个设备广 ...