登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

pcwanli的博客

nx

 
 
 

日志

 
 

PHP操作数组相关函数  

2010-12-14 16:18:52|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

PHP数组是一个重要的概念,它包含有大量的函数,方便人们的开发…现将它的数组分类,以方便查询及应用.
先说说PHP数组的定义…PHP数组包含两个项,key和value,可以通过key来获取相应的value,其中key又可以是数值和关联的,如$array[0],$array[one]…
创建数组
PHP中的数组声明跟其它语言的也有点小小的差别,但一样可以声明为一维,两维,三维及多维等,如
$array[0] = 1,$array = array(1,2,3); 一维数组,只包括三个值,属于数值型数组,引用时可用$array[0]来代表1,创建数值数组时可以省略索引.
$array = array(
   1 => “one”,
   2 => “two”,
   3 => “three”,
   4 => array(
    “one” => 1,
    “two” => 2,
    “three” => 3
   )
);
二维数组,同时又是关联数组,引用时可以$array[4][“one”]来代表1.
三维以上依此类推…
如果要批量创建数组,则可以通过下面这个函数:
array range ( mixed low, mixed high [, number step] )
如$array = range(1,6);代表array(1,2,3,4,5,6);
   $array = range(a,f); 代表 array(a,b,c,d,e,f);

输出数组
PHP中输出数组的函数有比较多,常用的有
bool print_r ( mixed expression [, bool return] )
void var_dump ( mixed expression [, mixed expression [, ...]] )
还有像echo,print,printf都可以输出单个数组.

测试数组
有时我们需要判定一个变量是否为数组,则可以使用:
bool is_array ( mixed var )

增加或删除数组元素
数组声明后并不是一成不变的,可能通过对数组的增加删除来进行深入的操作:
int array_push ( array &array, mixed var [, mixed ...] ) 将一个或多个单元压入数组的末尾,数组的长度根据入栈变量的数目增加,如array_push($array,$var)
mixed array_pop ( array &array ) 将数组的最后一个元素弹出(出栈),并在结束后重置数组的指针
mixed array_shift ( array &array ) 返回数组的第一个元素.
int array_unshift ( array &array, mixed var [, mixed ...] ) 在数组的开头插入一个或多个单元
array array_pad ( array input, int pad_size, mixed pad_value ) 用值将数组填补到指定的长度,如array_pad($array,3,$var);

定位数组元素
bool in_array ( mixed needle, array haystack [, bool strict] ) 检查数组中是否存在某个值
array array_keys ( array input [, mixed search_value [, bool strict]] ) 返回数组中的所有键名,重组成一个新数组
bool array_key_exists ( mixed key, array search ) 检查给定的key是否存在于数组中.
array array_values ( array input ) 返回数组中所有的值
mixed array_search ( mixed needle, array haystack [, bool strict] ) 在数组中搜索给定的值,成功则返回key.

遍历数组
PHP中提供了很多获取key和value的函数
mixed key ( array &array ) 从关联数组中取得键名
mixed reset ( array &array ) 将数组指针重置
array each ( array &array ) 返回数组中的键/值对并将数组向前移一步
mixed current ( array &array ) 返回数组中的当前单元
mixed end ( array &array ) 将数组中的指针移向最后一位
mixed next ( array &array ) 将数组中的指针移向下一位
mixed prev ( array &array ) 将数组中的指针移向上一位
array array_reverse ( array array [, bool preserve_keys] ) 返回一个单元顺序相反的数组
array array_flip ( array trans ) 将数组中的键值角色调换
除了上面的函数外还可以使用循环来对数组中的元素进行遍历,如
foreach (array_expr as $value)
{ statement    }
foreach (array_expr as $key=>$value)
{ statement   }
提取每个键/值对,直到获得所有项或满足某些内部条件为止
void list ( mixed varname, mixed ... ) 把数组中的值赋给一些变量

确定数组大小和唯一性
int count ( mixed var [, int mode] ) 计算数组中单元数组或对象中属性的个数, sizeof 的同名函数
array array_count_values ( array input ) 统计数组中所有值出现的次数
array array_unique ( array array ) 移除数组中重复的值

数组排序
这个听说是计算器的核心问题…呵呵…事实也是这样…
bool sort ( array &array [, int sort_flags] ) 对数组进行排序
bool natsort ( array &array ) 用自然排序法对数组进行排序
bool natcasesort ( array &array ) 用自然排序法对数组进行排序,不区分大小写
bool rsort ( array &array [, int sort_flags] ) 对数组进行逆向排序
bool asort ( array &array [, int sort_flags] ) 对数组进行排序并保持索引关系
bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] ) 对多个数组或多维数组进行排序
bool arsort ( array &array [, int sort_flags] ) 对数组进行逆序排序并保持索引关系
bool ksort ( array &array [, int sort_flags] ) 对数组按键名排序
bool krsort ( array &array [, int sort_flags] ) 对数组按键名逆序排序

合并,拆分,接合和分解数组
array array_combine ( array keys, array values ) 创建一个数组,一个数组的值作为其键名,另一个数组的值作为其值
array array_merge ( array array1 [, array array2 [, array ...]] ) 合并一个或多个数组
array array_merge_recursive ( array array1 [, array ...] ) 递归地全部一个或多个数组
array array_slice ( array array, int offset [, int length [, bool preserve_keys]] ) 从数组中取出一段,建立一个新的数组,如果offset为正数,拆分从距数组开关的offset位置开始,如果为负数,则拆分从距数组末尾的offset 位置开始,此时距数组开关的count(input_array)-|length|位置结束
array array_splice ( array &input, int offset [, int length [, array replacement]] ) 把数组中的部分值去掉,并用其它值替代.offset设置同上
array array_intersect ( array array1, array array2 [, array ...] ) 计算数组的交集,即是说如果第一个数组中出现过的值在接下来的几个数组中都有出现,则取出该值
array array_intersect_assoc ( array array1, array array2 [, array ...] ) 带索引检查数组中的交集
array array_intersect_key ( array array1, array array2 [, array ...] ) 使用键名比较数组中的交集
array array_diff ( array array1, array array2 [, array ...] ) 计算数组的差集, 即是说跟第一个数组中不同的值
array array_diff_assoc ( array array1, array array2 [, array ...] ) 带索引检查数组中的差集
array array_diff_key ( array array1, array array2 [, array ...] ) 使用键名比较数组中的差集

其它比较有用的数组函数
数组函数还有好多没有列出来…再上几个比较有用也比较常的,其它的就参考手册啦…手册里很清楚
mixed array_rand ( array input [, int num_req] ) 数组中随机取出一个或多个键,num指定个数
bool shuffle ( array &array ) 将数组打乱
number array_sum ( array array ) 计算数组中所有值的总和,关联数组忽略
array array_chunk ( array input, int size [, bool preserve_keys] ) 将一个数组分割成几个

 


 

 

php索引以0开始
$a=array(0=>"a",1=>"b");
$a=array("a"=>"A","b"=>"B");
调用:$a["a"]

多维数组:$a=array("a"=>array("a1"=>"A1","a2"=>"A2"))

输出数组
boolean print_r(var)

创建数组
1.array $a=array("a","b");
2.list
    $line="a|b|c";
    list($a,$b,$c)=explode("|",$line);
3.array range(low,high,step)
    $a=range(0,6) <==> $a=(0,1,2,3,4,5,6);
    $a=range(0,6,2) <==> $a=(0,2,4,6)

测试数组
boolean is_array(arr)

增加或删除数组元素
1.$arrayname[]
2.int array_push(tar,var) 把var放到数组tar的末尾
3.mixed array_pop(tar) 返回并删除数组tar的最后一个元素
4.mixed array_shift(tar) 返回并删除数组tar的第一个元素
5.int array_shift(tar,var) 将var增加到数组tar的最前面
6.array array_pad(tar,legth,pad) 更改数组tar,将其大小更改为legth,并且向右添加值为pad.如果当前大小小于或等于legth则不作任何操作。

定位数组元素
1.boolean in_array(needle,haystack[,strict]) 返回键needle是否在haystak中
2.array array_key(tar [,search_value]) 返回一个由数组tar中所有键组成的数组
3.boolean array_key_exists(key,tar) 如果数组tar存在键key返回true
4.array array_values(tar) 返回一个包含数组tar所有值得数组
5.miexd array_search(needle,hastack [,strict]) 返回值needl是否在hastack中存在

遍历数组
1.key() 取元素的键名
2.mixed reset(arr) 将数组arr的指针指向第一个元素
3.array each(arr) 返回数组arr中的当前键/值,并把指针移到下一个元素
4.mixed current(arr) 返回数组arr中的当前键/值
5.mixed end(arr) 把数组arr的指针指向最后一个元素,并返回最后一个元素
6.mixed next(arr) 把数组arr的指针指向下一个元素
7.mixed prev(tar) 将数组tar中的指针指向前一个元素,并返回这个元素
8.boolean array_walk(arr,cb,userdata) 将数组arr一次传递到自定义函数cb中
9.array array_reverse(arr,keys) 把数组arr中的值逆序排列
10.array array_flip(arr) 将数组tar中的键/值倒置

确定数组大小和唯一性
1.integer const(arr[,mode]) 返回数组arr的值总数。如果mode=1则可返回多维数组的值总数
2.array array_count_values(arr) 返回数组arr中的值的出现频率
3.array array_unique(arr) 删除数组arr中的重复值

数组排序
1.void sort(arr [,flag]) 对数组arr进行升序排序。注:排序后键/值不再对应
2.void natsort(arr) p1,p10,p2,p3 >>> p1,p2,p3,p10
3.void natcasesort(arr) 同natsort,但这个不区分大小写
4.void rsort(arr [,flag]) 同sort,这个降序排列。
5.void asort(arr [,flag]) 同sort,只是这个键/值对应
6.boolean array_multisort(arr,arg...) 同时对多个键/值进行排序
7.void arsort(arr [,flag]) 同rsort,但这个键/值对应
8.integer ksort(arr [,flag]) 按数组arr键进行升序排序
9.integer krsort(arr [,flag]) 按数组arr键进行降序排序
10.void usort(arr,cb) 按自定义函数cb的规则对arr排序

合并、拆分、接合、分解数组
1.array array_combine(keys,values) 使用两个数组的值,组成一个键/值对应的数组
2.array array_merge(arr,arr.....) 合并多个数组,对相同的键值进行覆盖
3.array array_merge_recursive(arr,arr...) 合并多个数组,对相同的键生成一个子数组
4.array array_slice(arr,offset [,length]) 返回一个在数组arr中指定部分的数组
5.array array_splice(input,offset,length,repl) 删除数组中指定的部分,并返回删除的部分
6.array array_intersect(arr,arr...) 返回多个数组中都存在的值
7.array array_intersect_assoc(arr,arr...) 返回多个数组中都存在的键/值
8.array array_diff(arr1,arr2...) 返回在数组arr1中存在,在其他数组中不存在的值
9.array array_diff_assoc(arr1,arr2...) 返回在数组arr1中存在,在其他数组中不存在的键/值

其他函数
1.mixed array_rand(arr[,num]) 随机返回一个数组arr中的键/值
2.void shuffle(arr) 把数组arr中的内容重新打乱
3.mixed array_sum(arr) 返回数组arr中所有值得累加值
4.array array_chunk(arr,size,key) 把数组arr分解成一个多维数组

  评论这张
 
阅读(622)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018