0

0

PHP&&&数组 - CSDN博客

不言

不言

发布时间:2018-04-03 10:53:43

|

1686人浏览过

|

来源于php中文网

原创

本篇文章介绍的是PHP中的数组问题,现在分享给大家,也可以给有需要的朋友一个参考,大家一起来看一看吧

概述

我们知道,在 PHP 编程语言中,数组的使用频率是很高的,几乎每个脚本都会使用到。 PHP 自带了大量的、优秀的操作数组的函数以供我们使用,本文就对这些数组函数的使用做一些分类和总结,方便大家以后查阅。

创建

1. range()

建立一个指定范围的数组:

$arr1 = range(0, 10);     # array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)$arr2 = range(0, 10, 2);  # array(0, 2, 4, 6, 8, 10)$arr3 = range('a', 'd');  # array('a', 'b', 'c', 'd')$arr4 = range('d', 'a');  # array('d', 'c', 'b', 'a')
2. compact()

创建一个包含变量名和它们值的数组:

$number = 10;
$string = "I'm PHPer";
$array  = array("And", "You?");
$result = compact("number", "string", "array"); # array('number'=>10, 'string'=>"I'm PHPer", 'array'=>array("And", "You?"))
3. array_combine()

创建一个用一个数组的值作为其键、另一个数组的值作为其值的数组:

立即学习PHP免费学习笔记(深入)”;

$key    = array("1", "3", "5", "7", "9");
$value  = array("I", "Am", "A", "PHP", "er");
$result = array_combine($number,$array);     # array('1'=>I, '3'=>'Am', '5'=>'A', '7'=>'PHP', '9'=>'er')

遍历

1. for 循环
$arr = range(0, 10);for($i = 0; $i < count($arr);  $i++) {    echo $arr[$i];
}
缺点:只能遍历索引数组。
2. while 循环
$products = array('apple'=>3, 'milk'=>6, 'eggs'=>10);while(list($product, $quantity) = each($products)) {    echo $product . '-' . $quantiry;
}
缺点:遍历完成之后,不能对数组进行第二次遍历(数组内部指针指向了最后一个元素)。
3. foreach 循环
$products = array('apple'=>3, 'milk'=>6, 'eggs'=>10);foreach($products as $product => $quantity) {    echo $product . '-' . $quantiry;
}

操作 key 或 value

unset() —  删除数组成员或数组
in_array() — 检查数组中是否存在某个值
array_key_exists() — 检查给定的键名或索引是否存在于数组中
array_search() — 在数组中搜索给定的值,如果成功则返回相应的键名

$array = array(1, 2, 3);unset($array); # array()$fruit = array('apple' => 'goold','orange' => 'fine','banana' => 'OK');if(in_array('good', $fruit)) {    echo 'Exit';
}

$search_array = array('first' => 1, 'second' => 4);if (array_key_exists('first', $search_array)) {    echo "Exit";
}

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); # $key = 2;

array_keys() — 返回数组中部分的或所有的键名
array_values() — 返回数组中所有的值

$array  = array('apple'=>'good', 'orange'=>'fine', 'banana'=>'ok');
$keys   = array_keys($array);   # array('apple', 'orange', 'banana')$values = array_values($array); # array('good', 'fine', 'ok')

array_unique() — 移除数组中重复的值

$input  = array(4, '4', '3', 4, 3, '3');
$result = array_unique($input); # array(4, '3')

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

$input  = array('oranges', 'apples', 'pears');
$result = array_flip($input); # array('oranges'=>0, 'apples'=>1, 'pears'=>2)

array_count_values() 统计数组中所有的值

$input  = array(1, 'hello', 1, 'world', 'hello');
$result = array_count_values($input); # array('1'=>2, 'hello'=>2, 'world'=>1)

排序

1. sort()rsort()

对数组进行升序或降序排序:

$fruits = array();
sort($fruits);  # array('apple', 'banana', 'lemon', 'orange')rsort($fruits); # array('orange', 'lemon', 'banana', 'apple')
2. asort()arsort()

对关联数组(按元素的值)进行升序或降序排序并保持索引关系:

$fruits = array('d'=>'lemon', 'a'=>'orange', 'b'=>'banana', 'c'=>'apple');
asort($fruits);  # array('c'=>''apple', 'b'=>''banana', 'd'=>'lemon', 'a'=>'orange')arsort($fruits); # array('a'=>'orange', 'd'=>'lemon', 'b'=>''banana', 'c'=>''apple')
3. ksort()

对数组按照键名排序:

$fruits = array('d'=>'lemon', 'a'=>'orange', 'b'=>'banana', 'c'=>'apple');
ksort($fruits); # array('a'=>'orange', 'b'=>'banana', 'c'=>'apple', 'd'=>'lemon')
4. shuffle()

随机打乱数组排序:

$numbers = range(1, 5);
shuffle($numbers); # array(3, 2, 5, 1, 4)

栈与列队

array_push() — 将一个或多个单元压入数组的末尾(入栈)
array_pop() — 将数组最后一个单元弹出(出栈)

AIBox 一站式AI创作平台
AIBox 一站式AI创作平台

AIBox365一站式AI创作平台,支持ChatGPT、GPT4、Claue3、Gemini、Midjourney等国内外大模型

下载
$stack = array('orange', 'banana');

array_push($stack, 'apple", 'raspberry'); # array('orange', 'banana', 'apple', 'raspberry')

$fruit = array_pop($stack);  #array('orange', 'banana', 'apple')

array_unshift() — 在数组开头插入一个或多个单元
array_shift() — 将数组开头的单元移出数组

$queue = array('orange', 'banana');

array_unshift($queue, 'apple", 'raspberry'); # array('apple', 'raspberry', 'orange', 'banana')

$fruit = array_shift($queue); # array('raspberry', 'orange', 'banana')

分割、填充、合并

array_slic() — 从数组中取出一段
array_splice() — 把数组中的一部分去掉并用其它值取代

$input  = array('a', 'b', 'c', 'd', 'e');
$result = array_slice($input, 2); # array('c', 'd', 'e')$input = array('red', 'green', 'blue', 'yellow');
array_splice($input, 2, 1); # array('red', 'green', 'yellow')

array_pad() — 以指定长度将一个值填充进数组

$input  = array(12, 10, 9);
$result = array_pad($input, 5, 0);   # array(12, 10, 9, 0, 0)$result = array_pad($input, -7, -1); # array(-1, -1, -1, -1, 12, 10, 9)

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

$a = array_fill(5, 3, 'a');     # array(5=>'a', 6=>'a', 7=>'a')$b = array_fill(-2, 3, 'pear'); # array(-2=>'a', 0=>'a', 1=>'a')

array_fill_keys() — 使用指定的键和值填充数组

$keys   = array('foo', 5, 10, 'bar');
$result = array_fill_keys($keys, 'a'); # array('foo'=>'a', 5=>'a', 10=>'a', 'bar'=>'a')

array_merge() — 合并一个或多个数组

$array1 = array('data0');
$array2 = array('data1');
$result = array_merge($array1, $array2); # array('data0', 'data1')

其他函数

1. array_walk()

使用用户自定义函数对数组中的每个元素做回调处理(改变原来数组):

$a = array(1, 2, 3, 4, 5);
array_walk($a, function(&$value, $key) {
    ++$value;
}); # array(2, 3, 4, 5, 6)
2. array_map()

将回调函数作用到给定数组的单元上(不改变原来数组,同时生成新的数组作为结果):

$a = array(1, 2, 3, 4, 5);
$b = array_map(function($item) {    return $item + 1;
}, $a); # array(2, 3, 4, 5, 6)
3. array_rand()

从数组中随机取出一个或多个元素:

$input  = array('apple', 'banana', 'lemon', 'orange');
$result = array_rand($input, 2); # array('banana', 'lemon')
4. array_diff()

计算数组 value 的差集:

$array1 = array('a' => 'green', 'red', 'blue', 'red');
$array2 = array('b' => 'green', 'yellow', 'red');
$result = array_diff($array1, $array2); # array('blue')

 相关推荐:

PHP数组简单整理

php数组函数详解

             

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

409

2023.09.04

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

107

2023.09.25

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

267

2025.12.04

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

447

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

606

2023.08.10

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

25

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

44

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

174

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

50

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ITcastjQuery视频教程
ITcastjQuery视频教程

共7课时 | 1.1万人学习

PHP课程
PHP课程

共137课时 | 13.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号