搜索
首页后端开发php教程php数组(Array函数)的处理

php数组(Array函数)的处理

Apr 14, 2018 pm 05:22 PM
php处理数组

相关推荐:《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
解释负载平衡如何影响会话管理以及如何解决。解释负载平衡如何影响会话管理以及如何解决。Apr 29, 2025 am 12:42 AM

负载均衡会影响会话管理,但可以通过会话复制、会话粘性和集中式会话存储解决。1.会话复制在服务器间复制会话数据。2.会话粘性将用户请求定向到同一服务器。3.集中式会话存储使用独立服务器如Redis存储会话数据,确保数据共享。

说明会话锁定的概念。说明会话锁定的概念。Apr 29, 2025 am 12:39 AM

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

有其他PHP会议的选择吗?有其他PHP会议的选择吗?Apr 29, 2025 am 12:36 AM

PHP会话的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。1.Cookies通过在客户端存储数据来管理会话,简单但安全性低。2.Token-basedAuthentication使用令牌验证用户,安全性高但需额外逻辑。3.Database-basedSessions将数据存储在数据库中,扩展性好但可能影响性能。4.Redis/Memcached使用分布式缓存提高性能和扩展性,但需额外配

在PHP的上下文中定义'会话劫持”一词。在PHP的上下文中定义'会话劫持”一词。Apr 29, 2025 am 12:33 AM

Sessionhijacking是指攻击者通过获取用户的sessionID来冒充用户。防范方法包括:1)使用HTTPS加密通信;2)验证sessionID的来源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

PHP的完整形式是什么?PHP的完整形式是什么?Apr 28, 2025 pm 04:58 PM

文章讨论了PHP,详细介绍了其完整形式,在We​​b开发中的主要用途,与Python和Java的比较以及对初学者的学习便利性。

PHP如何处理形式数据?PHP如何处理形式数据?Apr 28, 2025 pm 04:57 PM

PHP使用$ \ _ post和$ \ _获取超级全局的php处理数据,并通过验证,消毒和安全数据库交互确保安全性。

PHP和ASP.NET有什么区别?PHP和ASP.NET有什么区别?Apr 28, 2025 pm 04:56 PM

本文比较了PHP和ASP.NET,重点是它们对大规模Web应用程序,性能差异和安全功能的适用性。两者对于大型项目都是可行的,但是PHP是开源和无关的,而ASP.NET,

PHP是对病例敏感的语言吗?PHP是对病例敏感的语言吗?Apr 28, 2025 pm 04:55 PM

PHP的情况敏感性各不相同:功能不敏感,而变量和类是敏感的。最佳实践包括一致的命名和使用对案例不敏感的功能进行比较。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版