php 数组_php数组(Array函数)的处理

PHP Array 是什么?

数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。PHP 中的数组较为复杂,但比其他许多高级语言中的数组更为灵活。

数组 array 是一组有序的变量,其中每个值被称为一个元素。每个元素由一个特殊的标识符来区分,这个标识符称为键(也称为下标)。

数组中的每个实体都包含两项,分别是键(key)和值(value)。可以通过键值来获取相应的数组元素,这些键可以是数值键,也可以是关联键。如果说变量是存储单个值的容器,那么数组就是存储多个值的容器。

PHP 数组比其他高级语言中的数组更加灵活,不但支持以数字为键名的索引数组,而且支持以字符串或字符串、数字混合为键名的关联数组。而在其他高级语言中,如 Java 或者 C++ 等语言的数组,只支持数字索引数组。

PHP 数组的结构如下图所示:

6ff97d02544088bc3e7c48b68333d97b.png

在 PHP 中,有三种数组类型:索引数组:带有数字索引的数组

关联数组:带有指定键的数组

多维数组:包含一个或多个数组的数组

PHP Array 使用

PHP数组的定义[1, 5, 1.1, 'abc' true, false] //可以存储任何数据,此时为'默认下标',

[2=>1, 5=>5, 3=>1.1, 7=>'abc' 0=>true]//下标可以任意设定(无需顺序,无需连续)

[2=>1, 5, 1=>1.1, 'abc' 0=>true]//可以加下标,也可以不加(默认下标),下标分别是:2,3,1,4,0

//默认下标规则:前面已经用过的最大数字下标+1

[2=>1, 'dd'=>5, 1=>1.1, 'abc' 0=>true]//混合下标,同样遵循默认下标规则

[-2=>1, 'dd'=>5, 1.1, 'abc' true]; //负数下标不算在整数下标中,而只当作字符下标

//则最好3项的下标是:0, 1, 2

[2.7=>1, 'dd'=>5, 1=>1.1, 'abc' 0=>true]//浮点数下标为自动转换为整数,且直接抹掉小数

['2.7' =>1, 'dd'=>5, '11'=>1.1, 'abc' true]//纯数字字符串下标,当作数字看待,

//则此时下标为:2, 'dd', 11, 12, 13

[2=>1, 'dd'=>5, true=>1.1, 'abc' false=>true]//布尔值当下标,则true为1,false为0;

[2=>1, 'dd'=>5, 2=>1.1, 'abc' true]//如果下标跟前面的重复,则单纯覆盖前面同名下标的值

关联数组$array = [

'name' => 'zhaosi',

'age' => 20,

'sex' => '女'

];

多维数组$array = [

[

'name' => 'xiaoming',

'age' => 17,

'sex' => '男'

],

[

'name' => 'wanghua',

'age' => 16,

'sex' => '女'

],

[

'name' => 'zhaosi',

'age' => 20,

'sex' => '女'

],

[

'name' => 'zhangsan',

'age' => 22,

'sex' => '男'

],

[

'name' => 'wangli',

'age' => 12,

'sex' => '女'

],

[

'name' => 'zhuhua',

'age' => 14,

'sex' => '男'

]

];

数组历遍$array = [

[

'name' => 'xiaoming',

'age' => 17,

'sex' => '男'

],

[

'name' => 'wanghua',

'age' => 16,

'sex' => '女'

],

[

'name' => 'zhaosi',

'age' => 20,

'sex' => '女'

],

[

'name' => 'zhangsan',

'age' => 22,

'sex' => '男'

],

[

'name' => 'wangli',

'age' => 12,

'sex' => '女'

],

[

'name' => 'zhuhua',

'age' => 14,

'sex' => '男'

]

];

foreach ($array as $key => $value) {

echo $value['name'];

echo $value['age'];

echo $value['sex'];

}

输出结果xiaoming

17

wanghua

16

zhaosi

20

zhangsan

22

wangli

12

zhuhua

14

常用PHP数组函数

1、count() 函数的作用是计算数组中的元素数目或对象中属性个数int count(mixed var[,int mode])

第一个参数是必须的,传人个计算的数组或对象。第二个参数是可选,规定函数的模式是否递归地计算多维数组中数组的元素个数,可能的值是0 或1,0为默认值,不检测多维 数组,为 1则检测多维数组

示例:$a = array(

"a",

"b",

"c",

"d"

);

echo count($a); //输出个数4

$b = array(

"a" => array(

1,

2,

3

) ,

"b" => array(

4,

5,

6

)

);

echo count($b, 1); //输出 8

echo count($b); //输出 2y([b]=>2 [d]=>4)

2、array_count_values() 函数用于统计数组中所有值出现的次数,该函数只有一个参数array array_count_values(array input)

参数规定输入一个数组,返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数

示例:$array=array(1,"a",1,"b","a");

$newarray=array_count_values($array);

print_r($newarray);//输出array([1]=>2 [a]=>2 [b]=>1)

3、array_unique()函数用于删除数组中重复的值,并返回没有重复值的新数组array array_unique(array array)

参数需要接受一个数组,当数组中几个元素的值相等时,只保留第一个元素,其他元素被删除,并且返回的新数组中键名不变,array_unique()先将值作为字符串排序,然后对每个值只保留第一遇到的键名,接着忽略所有后面的键名

示例:$a=array("a"=>1,"b"=>2,"c"=>1);

print_r(array_unique($a));//输出 array([a]=>1 [b]=>2)

4、array_filter() 函数用回调函数过滤数组中元素,返回按用户自定义函数过滤后的数组array array_filter(array input [,callback callback])

参数:第一参数是必选项,要求输入一个被过滤的数组,第二参数可选,将用户自定义的函数名以字符串形式传入,如果自定义过滤函数返回true,则被操作的数组的当前值就会被包含在返回的结果数组中,并将结果组成一个新数组,如果原数组是一个关联数组,则键名保持不变。

示例:function myFun($var) {

if ($var % 2 == 0) {

return true;

}

}

$array = array(

"a" => 1,

"b" => 2,

"c" => 3,

"d" => 4

);

print_r($array, "myFun"); //输出 array([b]=>2 [d]=>4)

5、array_walk()函数对数组中的每个元素应用回调函数处理,如果成功返回true,否则返回falsebool array_walk( array &array,callback funcname [,mixed userdata])

第一个参数是必须,要求输入一个被指定的回调函数处理的数组,第二个参数传人用户定义的回调函数,用于操作传人第一参数的数组

示例:function myFunc1($value, $key) {

echo "key=$key value=$value";

}

$a = ["a" => "lin1", "b" => "lin2", "c" => "lin3"];

array_walk($a, "myFunc1");

function myFunc2($value, $key, $str) {

echo "$key $value";

}

array_walk($a, "myFunc2");

function myFunc3($value, $key) {

$value = "lin.su";

}

array_walk($a, "myFunc3");

print_r($a); //$a 是一个引用数组

6、array_map()函数可以处理多个数组,将回调函数作用到给定数组的元素上,返回用户自定义函数作用后数组。array array_map(callback callback,array arr1[,arry ....])

示例:function myFunc($v1, $v2) {

if ($v1 == $v2) {

return "same";

}

return "different";

}

$a = [1, 2, 3];

$b = [1, 4, 3];

print_r(array_map("myFunc", $a, $b)); //输出 array([0]=>same [1]=>difference [2]=>same)

print_r(array_map(null, $a, $b));

输出:array(

[0]=>array([0]=>1 [1]=>2 [2]=>3)

[1]=>array([0]=>1 [1]=>2 [2]=>3)

)

PHP 数组函数函数描述

array()创建数组。

array_change_key_case()把数组中所有键更改为小写或大写。

array_chunk()把一个数组分割为新的数组块。

array_column()返回输入数组中某个单一列的值。

array_combine()通过合并两个数组来创建一个新数组。

array_count_values()用于统计数组中所有值出现的次数。

array_diff()比较数组,返回差集(只比较键值)。

array_diff_assoc()比较数组,返回差集(比较键名和键值)。

array_diff_key()比较数组,返回差集(只比较键名)。

array_diff_uassoc()比较数组,返回差集(比较键名和键值,使用用户自定义的键名比较函数)。

array_diff_ukey()比较数组,返回差集(只比较键名,使用用户自定义的键名比较函数)。

array_fill()用给定的键值填充数组。

array_fill_keys()用指定键名的给定键值填充数组。

array_filter()用回调函数过滤数组中的元素。

array_flip()交换数组中的键和值。

array_intersect()比较数组,返回交集(只比较键值)。

array_intersect_assoc()比较数组,返回交集(比较键名和键值)。

array_intersect_key()比较数组,返回交集(只比较键名)。

array_intersect_uassoc()比较数组,返回交集(比较键名和键值,使用用户自定义的键名比较函数)。

array_intersect_ukey()比较数组,返回交集(只比较键名,使用用户自定义的键名比较函数)。

array_key_exists()检查指定的键名是否存在于数组中。

array_keys()返回数组中所有的键名。

array_map()把数组中的每个值发送到用户自定义函数,返回新的值。

array_merge()把一个或多个数组合并为一个数组。

array_merge_recursive()递归地合并一个或多个数组。

array_multisort()对多个数组或多维数组进行排序。

array_pad()用值将数组填补到指定长度。

array_pop()删除数组的最后一个元素(出栈)。

array_product()计算数组中所有值的乘积。

array_push()将一个或多个元素插入数组的末尾(入栈)。

array_rand()返回数组中一个或多个随机的键。

array_reduce()通过使用用户自定义函数,以字符串返回数组。

array_replace()使用后面数组的值替换第一个数组的值。

array_replace_recursive()递归地使用后面数组的值替换第一个数组的值。

array_reverse()以相反的顺序返回数组。

array_search()搜索数组中给定的值并返回键名。

array_shift()删除数组中首个元素,并返回被删除元素的值。

array_slice()返回数组中被选定的部分。

array_splice()删除并替换数组中指定的元素。

array_sum()返回数组中值的和。

array_udiff()比较数组,返回差集(只比较值,使用一个用户自定义的键名比较函数)。

array_udiff_assoc()比较数组,返回差集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。

array_udiff_uassoc()比较数组,返回差集(比较键和值,使用两个用户自定义的键名比较函数)。

array_uintersect()比较数组,返回交集(只比较值,使用一个用户自定义的键名比较函数)。

array_uintersect_assoc()比较数组,返回交集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。

array_uintersect_uassoc()比较数组,返回交集(比较键和值,使用两个用户自定义的键名比较函数)。

array_unique()删除数组中的重复值。

array_unshift()在数组开头插入一个或多个元素。

array_values()返回数组中所有的值。

array_walk()对数组中的每个成员应用用户函数。

array_walk_recursive()对数组中的每个成员递归地应用用户函数。

arsort()对关联数组按照键值进行降序排序。

asort()对关联数组按照键值进行升序排序。

compact()创建包含变量名和它们的值的数组。

count()返回数组中元素的数目。

current()返回数组中的当前元素。

each()返回数组中当前的键/值对。

end()将数组的内部指针指向最后一个元素。

extract()从数组中将变量导入到当前的符号表。

in_array()检查数组中是否存在指定的值。

key()从关联数组中取得键名。

krsort()对数组按照键名逆向排序。

ksort()对数组按照键名排序。

list()把数组中的值赋给一些变量。

natcasesort()用“自然排序”算法对数组进行不区分大小写字母的排序。

natsort()用“自然排序”算法对数组排序。

next()将数组中的内部指针向前移动一位。

pos()current() 的别名。

prev()将数组的内部指针倒回一位。

range()创建包含指定范围单元的数组。

reset()将数组的内部指针指向第一个元素。

rsort()对数组逆向排序。

shuffle()将数组打乱。

sizeof()count() 的别名。

sort()对数组排序。

uasort()使用用户自定义的比较函数对数组中的键值进行排序。

uksort()使用用户自定义的比较函数对数组中的键名进行排序。

usort()使用用户自定义的比较函数对数组进行排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值