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 学习资料少.中文资料更少,但也有我没做笔记的缘故导致学习效率 ...
随机推荐
- TCP/IP TIME_WAIT状态原理
原文转载:http://elf8848.iteye.com/blog/1739571 IME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动 ...
- MySQL中进行树状所有子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...
- embed 隐藏播放器显示
昨天在页面做音频播放的时候,客户要求仅仅有声音.不显示播放器. 百度搜到解决方法: <embed id="embed_sound_id" src="test.mp3 ...
- 惊叹jQuery(解决jQuery对象到DOM的转换)
jQuery是一个javascript框架,但绝对不是通常意义上的一些包装,个人感觉是一个改变js控制方式的框架.我们可以像美工通过写css分离页面代码一样,通过jQuery来分离页面与效果..下面转 ...
- PhoneGap+jQuery Mobile+Rest 访问远程数据
最近研究Mobile Web技术.发现了一个好东西-PhoneGap! 发现用PhoneGap+jQuery Mobile是一个很完美的组合! 本实例通俗易懂.适合广大开发人群:高富帅.白富美.矮穷戳 ...
- jqery和js如何判断checkbox是否选中
jquery: <div id="divId" class="divTable"> <div class="tableBody&qu ...
- linux C(hello world)程序调试
程序的调试(先得安装gdb工具,以root身份执行命令:sudo apt-get install gdb) 程序的调试是一个很重要的环节,windows IDE下那些强大的调试功能,Linux以什么来 ...
- 用python写makefile
温馨提示:阅读本文的同学最好能了解makefile和python的编写规则. 不懂的同学能够先保存在收藏夹.以便日后查看. 事实上之前我一直非常懒,我不想了解makefile规则.由于在linux下开 ...
- 【JavaScript】关于prototype原型的一些链接
http://www.cnblogs.com/slowsoul/archive/2013/05/30/3107198.html http://www.thinksaas.cn/group/topic/ ...
- direction:rtl demo
<style> body {font:14px/18px Consolas;} div { width:100px;padding:10px; margin:10px 0px 30px 0 ...