1、数组操作的基本函数

数组的键和值:
  array_values($arr);获得数组的值
  array_keys($arr);获得数组的键名
  array_flip($arr);数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
  in_array("apple",$arr);在数组中检索apple
  array_search("apple",$arr);在数组中检索apple ,如果存在返回键名
  array_key_exists("apple",$arr);检索给定的键名是否存在数组中
  isset($arr[apple]):检索给定的键名是否存在数组中

数组和变量之间的转换:
  extract($arr);用于把数组中的元素转换成变量导入到当前文件中,键名当作变量名,值作为变量值
  注:(第二个参数很重要,可以看手册使用)使用方法  echo $a;
  compact(var1,var2,var3);用给定的变量名创建一个数组

数组的内部指针:
  current($arr);返回数组中的当前单元
  pos($arr);返回数组中的当前单元
  key($arr);返回数组中当前单元的键名
  prev($arr);将数组中的内部指针倒回一位
  next($arr);将数组中的内部指针向前移动一位
  end($arr);将数组中的内部指针指向最后一个单元
  reset($arr;将数组中的内部指针指向第一个单元
  each($arr);将返回数组当前元素的一个键名/值的构造数组,并使数组指针向前移动一位
  list($key,$value)=each($arr);获得数组当前元素的键名和值

2、数组的排序

通过元素值对数组排序:
  sort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
  rsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
  usort($arr,"function");使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序:
  asort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
  arsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
  uasort($arr,"function");使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)       保留键名的数组排序。

通过键名对数组排序
  ksort($arr);按照键名正序排序
  krsort($arr);按照键名逆序排序
  uksort($arr,"function");使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第2个

自然排序法排序
  natsort($arr);自然排序(忽略键名)
  natcasesort($arr);自然排序(忽略大小写,忽略键名)

数组排序:

使用sort()函数:
sort()函数是区分字母大小写的。所有的大家字母都在小写字母的前面。所以‘A’小于‘Z’,而'Z'小于‘a’。
该 函数的第二个参数是可选的。这个可选参数可以传递SORT_REGULAR(默认值)、SORT_NUMERIC或SORT_STRING。指定排序类型 的功能是非常有用的,例如,当要比较可能包含有数字2和12的字符串时。从数学角度看,2要小于12,但是作为字符串,‘12’却要小于‘2’。

使用asort()函数和ksort()函数对相关数组排序:
函数asort()根据数组的每个元素值进行排序。ksort()函数是按关键字排序而不是按值排序。

反向排序:

函数rsort()将一个一维数字索引数组按降序排序。函数arsort()将一个一维相关数组按每个元素值的降序排序。函数krsort()针根据数组元素的关键字将一维数组按照降序排序。
为了访问一个一维数组中的数据,需要使用数组的名称和元素的索引,除了一个元素具有两个索引——行和列外,二维数组和一维数组是类似的。
可以使用双重for循环来实现同样的效果:
for ( $row=0; $row<3; $row++ )
{
for ( $column=0; $column<3; $column++ )
{
echo '|'.$products[$row][$column];
|
echo '|<br />';
}
如果对一个大数组使用这种代码,那么将简洁得多。
你可能更喜欢创建列名称来代替数字。可以使用如下代码:
$products = array ( array ( 'Code'=>'TIR', 'Descrīption'=>'Tires', 'Price'=>100 ), array ( 'Code'=>'OIL', 'Descrīption'=>'Oil', 'Price'=>10 ), array ( 'Code'=>'SPK', 'Descrīption'=>'Spark Plugs', 'Price'=>4 ) };
如果希望检索单个值,那么使用这个数组会容易得多。请记住,将所描述的内容保存到用它的名 称命名的列中,与将其保存到所谓的第一列中相比,前者更容易记忆。使用描述性索引,不需要记住某个元素是存放在[x][y]位置的。使用一对有意义的行和 列的名称作为索引可以使用你很容易找到所需的数据。
然后,我们却不能使用一个简单的for循环按顺序遍历每一列。可以使用for循环遍历外部的数 字索引数组$products。$products数组的每一行都是一个具有描述性索引的数组。在while循环中使用each()和list()函数, 可以遍历整个内部数组。因此,需要一个内嵌有while循环的for循环。
for ( $row = 0; $row < 3; $row++ }
{
while ( list ( $key, $value ) = each ( $products[$row] ) )
{
echo "|$value";
}
echo '|<br />';
}
三维数组具有高、宽、深的概念。如果能轻松地将一个二维数组想像成一个有行和列的表格,那么就可以将三维数组想像成一堆像这样的表格。每个元素可以通过层、行和列进行引用。
根据创建多维数组的方法,可以创建四维、五维或六维数组。在PHP中,并没有设置数组维数的限制,但人们很难设想一个多于三维的数组。大多数的实际问题在逻辑上只需要使用三维或者更少维的数组结构就可以了。

PHP数组基本的操作方法的更多相关文章

  1. 《前端之路》之三 数组的属性 && 操作方法(上)

    目录 03:数组的属性 && 操作方法(上) 03:数组的属性 && 操作方法(上) 一.Array property 数组的属性 1.constructor 返回对创 ...

  2. 关于Java中数组的常用操作方法

    1. 声明一个数组 String[] arr1 = new String[5]; String[] arr2 = {"a","b","c", ...

  3. 《前端之路》之三 数组的属性 && 操作方法(下)

    咱们 接着上篇来讲- 7.slice() 从某个已有的数组返回选定的元素 经常用来将类数组转化成数组,这样做一方面可以利用现有的数组方法更加方便的处理,另一方面是处于性能的考虑 var f = fun ...

  4. JS数组的基本操作方法

    一.concat()concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3];var arr2 = [4,5];va ...

  5. js 数组对象的操作方法

    在jquery中处理JSON数组的情况中遍历用到的比较多,但是用添加移除这些好像不是太多. 今天试过json[i].remove(),json.remove(i)之后都不行,看网页的DOM对象中好像J ...

  6. 【前端学习笔记02】JavaScript字符串、数组的一些操作方法

    字符串操作: //str.length "micromajor".length // 10 //str.charAt() "micromajor".charAt ...

  7. JavaScript中数组的各种操作方法

    [监测数组] 使用instanceof操作符,进行检测 ar arr = [1,2,3]; // arr = '非非'; if(arr instanceof Array){ console.log(' ...

  8. JavaScript 数组操作方法 和 ES5数组拓展

    JavaScript中数组有各种操作方法,以下通过举例来说明各种方法的使用: 数组操作方法 push 在数组最后添加一个元素 var arr=[3,4,5,6] console.log(arr) // ...

  9. 第5章 Java数组

    1.什么是数组 数组可以想象成一个巨大的盒子,这个盒子里面存放的是同一个数据类型的数据 例如:int[] scores = {78,68,94,93}; 2.如何使用Java中的数组 2.1申明数组 ...

随机推荐

  1. Asp.Net Mvc ScriptBundle 脚本文件捆绑压缩 导致 脚本出错的问题

    由于捆绑压缩会对所有包含的文件进行压缩,无法设置忽略对某个js文件的压缩.导致压缩该js后,脚本出错的问题. 解决方式: 重写 ScriptBundle 的 GenerateBundleRespons ...

  2. Visual Studio 编译信息细度显示设置

    visual studio 项目在编译时,可根据调试需要设置output窗口输出内容的详细程度,这对于bug或warning的解决具有很大帮助.具体设置如下: 依次点击:"Tools&quo ...

  3. 20164317《网络对抗技术》Exp3 免杀原理与实践

    一.实验要求 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程( ...

  4. Linux下运行crm项目

    虚拟环境运行crm项目 1.进入虚拟环境 2.解决crm项目运行所需的依赖环境 1.手动解决 pip3 install django==1.11.14 pip3 install pymysql pip ...

  5. Slope one—个性化推荐中最简洁的协同过滤算法

    Slope One 是一系列应用于 协同过滤的算法的统称.由 Daniel Lemire和Anna Maclachlan于2005年发表的论文中提出. [1]有争议的是,该算法堪称基于项目评价的non ...

  6. webpack快速入门——打包后如何调试

    在配置devtool时,webpack给我们提供了四种选项. source-map:在一个单独文件中产生一个完整且功能完全的文件.这个文件具有最好的source map,但是它会减慢打包速度: che ...

  7. iOS-WKWebview 带有进度条加载的ViewController【KVO监听Webview加载进度】

    前言 为什么要说 WKWebview,在之前做电子书笔记时已经提过 WKWebview 在iOS8之后已完全替代 Webview,原因就不多说了,主要还是内存过大: 封装 封装一个基于 UIViewC ...

  8. php 中的查找算法 和 排序方法(多字段排序)

    一.查找算法 1.顺序查找(一个一个查,效率低,不用多说) 2.二分查找 /* php 二分查找 在$a数组里查找$x的位置 $a必须是一个以升序排序后的数组 */ function binsearc ...

  9. 【bzoj5210】最大连通子块和 动态dp

    动态$dp$好题 考虑用树链剖分将整棵树剖成若干条链. 设x的重儿子为$son[x]$,设$x$所在链链头为$top[x]$ 对于重链上的每个节点(不妨设该节点编号为$x$)令$f[x]$表示以$x$ ...

  10. 简述ARP请求过程(同一子网和不同子网)

    1. 同一子网 主机A在准备构造链路层以太网帧头时,首先根据目的IP去查找ARP表,如果找到对应项,则直接得到目的MAC地址,如果没有查到才执行上面所说的ARP广播请求.这样做是为了最大限度地减少广播 ...