PHP数组

1.数字索引数组

1.1创建一个数组

php中最常用的两个类型是:数组,字符串。数组也分为两种,一种是数字索引,一种是关键是索引,关键字索引有点像python中字典的意思.
数字索引类型的数组的创建方法

$products = array( 'Tires', 'Oil', 'Spark Plugs' );

即使一个数组不存在,也可以直接对数组进行赋值操作,自然就产生了一个数组,例如下面这个等同于上面:

$products[0] = 'Tires';
$products[1] = 'Oil';
$products[2] = 'Spark Plugs';

1.2访问数组元素

访问的时候用下标来索引。

echo $products[0];

1.3使用循环访问数组

循环访问数组有for和foreach,一个是用在数字索引数组中,一个是用在关键字数组索引中

    for($i=0; $i<3; $i++) {
echo $products[$i];
}

2.非数字索引数组

2.1创建一个数组

创建一个关键字索引数组

$prices = array('Tires'=>100, 'Oil'=>10, 'Spark Plug'=>4);

用下面这个也是等价的

$prices['Tires'] = 100;
$prices['Oil'] = 10;
$prices['Spark Plugs'] = 4;

2.2访问数组元素

访问的时候把数字下标改成关键字即可

echo $prices['Tires'];

2.3使用循环访问数组

用循环来处理关键字数组的时候有三种方法。foreach或list()或each()
先看foreach:

foreach ($prices as $key => $value) {
echo $key."-".$value."<br />";
} foreach ($prices as $value) {
echo $value
}

第一个foreach中把数组$prices里面的元素按照一组一组分开,然后把美一组中的关键和值分别赋值给$key和$value;第二个是默认把值赋值给变量$value。
再看each():

while ($element = each($prices)){
echo $element['key'].'-'.$element['value']."<br />";
}

each()会每次传递给$element一对键值对,然后$element就变成了一个包含一个key元素和一个value元素的数组。each()和while连用
最后看list():

while (list($product,$price) = each($prices)) {
echo "$product - $price<br />";
}

list()只不过把each()传进来的一对键值对分别赋值给list().

3.数组操作符

数组只有一个联合(+)操作符
$a+$b:数组$b被附加到$a中,但是任何关键字相同的元素将不会被添加,相当已一个集合,集合是不允许重复的。

4.多维数组

二维数组就是一个二位表。举个二位数组的例子,其他的也类似:

$products = array(
array('TIR', 'Tires',100),
array('OIL', 'Oil', 10),
array('SPK', 'Spark Plugs', 4)
)

调用方法是:
$products[0][1];
使用for循环的一个方法是:

for ($row=0;$row<3;$row++){
for($col=0;$col<3;$col++){
echo $products[$row][$col];
}
echo "<br />";
}

关键字多维数组的方法类似。

5.数组排序

5.1三种排序函数sort(),asort(),ksort()

sort()函数是对数字索引数组进行排序的。按照字母升序进行排列的,大写字母在小写字母前面,接收参数为数组,还有一个可选参数,这个参数的值是:SORT_REGULAR(默认), SORT_NUMERIC,SORT_STRING。作用是按照数字和字符顺序来排序。
sourt($array);
asort()ksort()分别是对关键字数组进行按照值和关键字进行排序。
asort()是对每个元素的值进行排序,ksort()是对元素关键字进行排序。

5.2反向排序

反向排序是将前面的三个函数的排序结果进行反序,从函数名字上来看,只需要在函数名上加一个r即可。
sort(),asort(),ksort()的反序分别对应:rsort(),arsort(),krsort().

多维数组的排序是需要自己设置比较函数的。

6.数组函数

在数组中常用的函数还有:

6.1在数组中浏览

每一个数组都有一个内部的指针来指向当前使用的是数组中的哪一个元素。
each()依次返回数组中的元素。
current()返回当前数组指针指向的一个元素,例如当对一个数组进行循环操作,在调用三个元素之后break,那么当前指针指向的就是第4个元素了,此时如果调用current(),那么就返回数组的第四个元素了。
reset()返回数组的第一个元素。
end()返回数组的最后一个元素。

6.2操作数组中的每一个元素

array_walk($array, func,agrv),以相同的方式修改数组中的每一个元素。
接收两个参数,第三个为可选:
第一个参数是要操作的数组,第二个参数是操作的方法,可以是自定义的一个函数,第三个参数是函数需要传入的参数。

6.3统计数组元素个数

count() sizeof()函数的作用和使用方法是一样的,都是统计数组里面元素的个数。没有区别
array_count_values()这个函数会统计每个特定的值在数组中出现的次数。

PHP数组操作的更多相关文章

  1. Javascript数组操作

    使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...

  2. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  3. php数组操作集锦- 掌握了数组操作, 也就掌握了php

    参考下面的文章, 是很好的: http://www.cnblogs.com/staven/p/5142515.html http://pcwanli.blog.163.com/blog/static/ ...

  4. JavaScript 数组操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. JavaScript中数组操作常用方法

    JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...

  6. php 常用数组操作

    php常用的数组操作函数,包括数组的赋值.拆分.合并.计算.添加.删除.查询.判断.排序等 array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 <?p ...

  7. 005-Scala数组操作实战详解

    005-Scala数组操作实战详解 Worksheet的使用 交互式命令执行平台 记得每次要保存才会出相应的结果 数组的基本操作 数组的下标是从0开始和Tuple不同 缓冲数组ArrayBuffer( ...

  8. JavaScript中常见的数组操作函数及用法

    JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...

  9. jQuery_03之事件、动画、类数组操作

    一.事件: 1.模式触发事件:  ①DOM:elem.onXXX();只能触发直接用onXXX绑定的事件处理函数:用addEventistener添加的事件监听无法模拟出发触发:  ②jQuery:$ ...

  10. PHP内核探索之变量(4)- 数组操作

    上一节(PHP内核探索之变量(3)- hash table),我们已经知道,数组在PHP的底层实际上是HashTable(链接法解决冲突),本文将对最常用的函数系列-数组操作的相关函数做进一步的跟踪. ...

随机推荐

  1. 记安装EP时在指定BCP账户信息时提示AOS无法访问的解决方法

    因为卡在这个问题上好久,外加同事也有遇到,因此记下来! 环境:Windows Server 2012 R2 Standard + Dynamics AX 2012 R2 + SharePoint 20 ...

  2. java良好的编码习惯

    1. 尽量在合适的场合使用单例   使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步 ...

  3. 线程.FTP.SFTP.打包

    Windows就是多线程模式.每一个解决方案就是一个进程.一个进程下拥有多个线程. 简单点.单核的处理器不存在多线程.是CPU在每一个线程上切换处理.在人反应不过来的情况下完成同步的效果. 比如左手画 ...

  4. JS学习笔记10之Math对象

    -->Math对象 常用属性和方法-->使用Math对象制作相应的效果 Math对象用于执行数学任务 一.Math对象的属性: 二.Math对象的方法: 三.常用属性和方法: Math.P ...

  5. 列表屏幕(List Screen)

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. 一起来学习android自定义控件3——边缘凹凸的View

    前言 最近做项目的时候遇到一个卡劵的效果,由于自己觉得用图片来做的话可以会出现适配效果不好,再加上自己自定义view方面的知识比较薄弱,所以想试试用自定义View来实现.先看设计图效果 实现分析 上面 ...

  7. listview的ViewHolder优化

    1.自定义listview,首先在activity.xml中插入一个listview,可以用android:divider=""设置分割线颜色样式,android:dividerH ...

  8. 熟悉HTML CSS布局模型

    HTML最难的地方来了!这个我反复了很多遍, 包括现在写博客, 也对我自己算是一种温习, 我这块怕是没办法写的很好懂, 因为我自己还不能把我学到的准确通俗易懂的表达出来, 给自己记个笔记, 以后再来一 ...

  9. Linux(Centos)系统上搭建SVN以及常见错误解答

    本文主要介绍怎样在Centos上搭建SVN,文章内容比较基础,适合小白用户学习. 1.Linux版本Centos 6.5 查看linux版本命令: cat /etc/issue 2.查看本机上是否已经 ...

  10. Openstack api 学习文档 & restclient使用文档

    Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...