php学习笔记7--php中的数组
php中的数组
1.数组的定义:
显式方式:$arr = array(1,2,3,4,5);
$arr1 = array('name'=>'dqrcsc','age'=>'24');
隐式方式:$arr[]=1;$arr[]=2;
注意:array() 是一个语言结构,用于字面上表示数组,不是常规的函数。
2.关于php数组的索引:
语法“index => values”,用逗号分开,定义了索引和值。索引可以是字符串或数字。
如果省略了索引,会自动产生从 0 开始的整数索引。如果索引是整数,则下一个产生的索引将是目前最大的整数索引 + 1。
注意如果定义了两个完全一样的索引,则后面一个会覆盖前一个。
此外,php数组的索引有如下转换规则:
此外 key 会有如下的强制转换:
1) 包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
2) 浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
3) 布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
4) Null会被转换为空字符串,即键名 null 实际会被储存为 ""。
5) 数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。
<?php
$array = array(
1 => "a" ,
"1" => "b" , //索引转换为整型的1
1.5 => "c" , //索引转换为整型的1
true => "d" , //索引转换为整型的1
);
var_dump ( $array );
?>
以上例程会输出:
array(1) {
[1]=>
string(1) "d"
}
3.数组的遍历:
count():返回数组元素的个数(长度)
1)使用for循环对索引数组进行遍历:
$len = count($arr);
for($i=0; $i<$len; $i++){ $arr[$i]...}
2)使用foreach遍历关联数组:
foreach(数组 as $value){
//使用$value当做当前元素的值
}
foreach(数组 as $key => $value){
//使用$key当做当前元素的下标
//使用$value当做当前元素的值
}
若在遍历过程中要修改数组元素的值,可以使用&进行引用传值:
foreach ( $arr as & $value ) {
$value = $value * 2 ;
}
3)数组指针:
每个数组都有一个指针(定位符),默认指向数组的第一个元素。如果在对数组进行遍历,那么该指针会在访问指针当前所指向的元素
之后,向后移动,指向下一个元素的地址。遍历完最后一个元素,指针会继续下移,从而移出当前数组空间,再次对数组元素进行访问
的时候,返回FALSE。
4)使用函数each()进行数组遍历:
each():每次从数组中获取当前数组指针所指向的元素,返回一个有四个元素的数组(关联+索引),并且将数组的指针下移一位
list是一个语法结构,将得到的数组里的元素,必须是以0开始的索引元素,对应的赋值给list所指定的变量里。
语法:list($name,$age,$gender) = array('dqrcsc',24,'男');
相当于$name = 'dqrcsc';$age = 24; $gender = '男';
因为each返回的结果里有两个索引元素0和1,所以一般使用list与each进行配对使用
5)关于数组的常用函数:
key():获取数组当前指针所指向元素的索引
current():获取数组指针所指向的元素的值
next():返回数组当前指针所指向的下一个的元素的值,并指针下移一位
prev():返回当前指针所在位置的前一个元素的值,并且将指针向前移动一位
注意:如果当前指针已经在数组元素的最后一个元素,那么next返回FALSE,指针依然下移一位,移出了数组;同样的,当前指针已经在
数组元素的第一个元素,那么使用prev将会将数组的指针移出数组,返回FALSE。next()和prev()都无法将移出数组的指针再拉回到合
法的位置。
以下两个函数可用于重置数组指针:
reset():重置数组的指针,让数组指针指向第一个元素,如果成功返回第一个元素的值,失败返回FALSE
end():获取数组元素最后一个元素的值,指针也会指向最后一个元素
注意:如果数组第一个元素被删除,那么指针重置之后,是第二个元素(从第一个有效元素开始)。
array_keys():获取数组的所有下标,返回一个索引数组,数组元素的值都是目标数组的下标
array_values():获取数组所有的值,返回一个索引数组
array_push():从数组的尾端加入一个元素(模拟入栈)
array_pop:从数组的尾端弹出一个元素(模拟出栈)
array_shift:从数组头部将数组元素移出(模拟出队)
array_unshift:从数组的头部插入数据(模拟入队)
数组与字符串之间的转换:
explode():将字符串按照指定的分隔符分解成一系列小的字符串,都成为数组的一个元素
implode():将一个数组里的所有的元素按照某个分隔符进行拼接,变成一个字符串
range():按照ASCII码能够指定范围,自动生成数组元素的函数
array_rand():从数组中随机取出指定个数的元素下标
shuffle():将原来的数组里的元素打乱
数组的合并:+和array_merge()
+:保存第一个数组的所有元素,如果后面的数组的元素与前面数组的元素的下标相同,那么就忽略,如果不同则加到第一个数组里,
最终返回一个数组
array_merge():先保留第一个数组的所有元素,如果后面数组的元素与前面数组的元素关联下标相同则用后面数组的元素覆盖前面的
;如果是索引下标,直接添加到第一个数组后面,重置索引。
php学习笔记7--php中的数组的更多相关文章
- 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理
(1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...
- [学习笔记] 在Eclipse中导入项目
参考前文:[学习笔记] 在Eclips 中导出项目 选择已经导出的文件: 导入之后,项目结构如下: 至此,完成.
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar中的类解压后放在运行jar中
前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中 使用7z打开压缩包,查看所有依赖的jar都被解压以包名及class的方式存储在了运行jar中,此时jar的 ...
- [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中
本文需要参考前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar在子目录中 上文是导出的运行的依赖jar被放在了子目录中,本文是将依赖jar放在可运行jar的本身,这样发布的 ...
- [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar在子目录中
工程创建可参考前文: [学习笔记] 在Eclipse中使用Hibernate,并创建第一个工程,数据库为Oracle XE 在工程上鼠标右键: 找到java 选择 Runable JAR file N ...
- Web安全学习笔记 SQL注入中
Web安全学习笔记 SQL注入中 繁枝插云欣 --ICML8 权限提升 数据库检测 绕过技巧 一.权限提升 1. UDF提权 UDF User Defined Function,用户自定义函数 是My ...
- matlab学习笔记12_2创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段
一起来学matlab-matlab学习笔记12 12_2 结构体 创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段 觉得有用的话 ...
- Backbone学习笔记一Backbone中的MVC
原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...
- Julia 学习笔记(一):数组
个人向,只会记录一些需要注意的点. 前言 学习 Julia 已经有一段时间了,但是进步缓慢.这一方面是最近代码写得少,一方面是 Julia 学习资料少.中文资料更少,但也有我没做笔记的缘故导致学习效率 ...
随机推荐
- Codeforces Round #335 (Div. 2) C. Sorting Railway Cars 动态规划
C. Sorting Railway Cars Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.codeforces.com/conte ...
- Java中this,static,super及finalkeyword和代码块
this: 能够使用this表示类中的属性------this.name=name 能够使用this强调调用的是本类的方法 能够使用this调用本类的构造方法------this();调用本类中无參构 ...
- android手机打电话代码分析
智能手机的打电话功能是由RIL部分来实现的,见下图: 开始分析Android源代码中的RIL部分. 又上图,以及其他相关资料,我得知在Android中有一个叫rild的守护进程.我猜测此进程与电话的拨 ...
- 【JavaScript】谈谈Google Polymer以及Web UI框架的未来
摘要:开发者Axel Rauschmayer在自己的博客上详解了Google Polymer的设计理念与组成架构,深得Polymer开发者的认同.他认为Polymer这样高互操作性的设计才应该是Web ...
- 【JavsScript】推荐五款流行的JavaScript模板引擎
摘要:Javascript模板引擎作为数据与界面分离工作中最重要一环,受到开发者广泛关注.本文通过开发实例解析五款流行模板引擎:Mustache.Underscore Templates.Embedd ...
- Dapper链接查询扩展
一对多映射关系 /// <summary> /// 一对多连接查询 /// </summary> /// <typeparam name="FirstT&quo ...
- jquery 动态事件绑定(0512)
jquery动态事件绑定,父元素需为静态元素,(不能是动态生成): $("#parent").on("click","#child",fun ...
- java 简单矩阵乘法运算
1.计算的两个矩阵其中第一个矩阵的列数必须和第二个矩阵的行数一致(或者反过来): 2.第一个矩阵的行数决定了结果矩阵的行数,第二个矩阵的列数决定了结果矩阵的列数: package org.admln. ...
- The calculation of GPA
Problem Description 每学期的期末,大家都会忙于计算自己的平均成绩,这个成绩对于评奖学金是直接有关的.国外大学都是计算GPA(grade point average) 又称GPR(g ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[1]
转载:http://quweiprotoss.wap.blog.163.com/ Push data to Solr or have Solr pull it 尽管一个应用通过HTTP方式与Solr通 ...