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 学习资料少.中文资料更少,但也有我没做笔记的缘故导致学习效率 ...
随机推荐
- Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>
Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...
- 负margin使用权威指南
自CSS2早在1998年,推荐表的使用已经慢慢褪色成背景和历史书中.正因为如此,CSS布局从那时起一直编码优雅的代名词. 的所有CSS概念设计师所使用,奖项可能需要给负margin的使用是最至少谈论的 ...
- DAG成员服务器还原
DAG成员服务器 exmb02 已损坏: 1.使用 Get-MailboxDatabase cmdlet 为要恢复的服务器上的任何邮箱数据库副本检索所有重播延迟和截断延迟设置: Get-Mailb ...
- C++ 方法隐藏
1.过载:一个类中,方法名相同,形参表不同的方法. 2.重写:子类与父类的virtual方法,方法名,形参表相同. 3.考虑下面的情况,子类与父类方法名相同. 父类是virtual方法 ...
- 【原创】PostSharp入门笔记
最近写了一个抓取软件,用户反映软件偶尔会抛异常: 由于当时写代码时没有注意异常处理,大部分方法都没有写try…catch…finally的语句,所以很难找出异常是出在哪个地方,难道要为所有方法加上tr ...
- android仿win8 metro磁贴布局
代码下载 //更新代码, 这里是更新后的代码 //////////////////////// 1,含一个图片无限滚动的控件,自己实现的 2.可新增删除每个磁贴 3.来个图片吧 ////* ...
- Swift2.0 中的String(一):常用属性
字符串算是平常用的比较多.花样也比较多的一个类型,昨天有空把相关的一些常用操作都写了一遍,总结出来.其实iOS里面的字符串更复杂,还有NSString系列等等,那些API太多将来需要用的时候再慢慢学. ...
- 推荐几个可以与PhoneGap很好搭配的UI框架
- xui.js:可以被视作是jquery在phonegap上的替代品,挺好用的- jq.mobi:同上,不过体积比xui.js要大,一般还是用xui.js- jq.ui:jq.mobi配套的UI框架 ...
- purge
RR级别 mysql V5.6 debug ; 测试1 会话1: mysql)); Query OK, rows affected (0.04 sec) mysql,"a"); Q ...
- __attribute__((unused))
在gcc手册中找到了有关的解释: unused:This attribute, attached to a function, means that the function is meant to ...