首页  >  文章  >  后端开发  >  php数组(Array函数)的处理

php数组(Array函数)的处理

不言
不言原创
2018-04-14 17:22:128858浏览

相关推荐:《PHP ARRAY 数组函数(专题)

PHP Array 是什么?

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

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

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

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

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

Snipaste_2020-07-31_17-36-14.png

在 PHP 中,有三种数组类型:

  • 索引数组:带有数字索引的数组

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

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

推荐视频教程:

1、《PHP函数之array数组函数视频讲解

2、《PHP基本语法(玉女心经版)

3、《PHP字符串处理(玉女心经版)

推荐学习手册:《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,否则返回false

bool 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() 使用用户自定义的比较函数对数组进行排序。

以上是php数组(Array函数)的处理的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn