`

PHP开发笔记系列(九)- 数组(四)

阅读更多

    经过《PHP开发笔记系列(九)- 数组(一)》《PHP开发笔记系列(九)- 数组(二)》《PHP开发笔记系列(九)- 数组(三)》 三篇的关于数组的使用后,本篇《PHP开发笔记系列(九)- 数组(四)》 将把Php数组的最后一部分,数组的集合处理。


    1. 合并数组

    在平常的使用中,我们可能需要从数据库中查询两部分数据,分别是两个数组,然后融合两个数组得到一个结果。要达到这样的效果,需要用到array_merge()函数,对于数值键数组,两个数组中的元素会叠加,即使值相同,也不会覆盖前面的元素,因此返回结果的数组长度等于两个数组之和。如下:

 

file: array_merge.php
url: http://localhost:88/array/array_merge.php
<?php

    $number = array(1, 2, 3, 4, 5);

    $letter = array('a', '1', 'b', '2', 'c');
    
    $result = array_merge($number, $letter);
    
    print_r($result);

?>

 

    对于关联键数组,如果键相同,则对应的值会被后面的元素覆盖。如下:

 

file: array_merge.php
url: http://localhost:88/array/array_merge.php
<?php
    
    $student = array('s1'=>'1st student', 's2'=>'2nd student', 's3'=>'3rd student');
    
    $new_student = array('s1'=>'1st new student', 's2'=>'2nd student', 's3'=>'3rd new student');
    
    $result = array_merge($student, $new_student);
    
    print_r($result)
    
?>

 

    2. 递归追加数组

    array_merge_recursive()函数与array_merge()函数相同,不同的是前者会把键值相同的两个元素的值合并在一起,形成一个新的数组并以原有的键作为数组名。如下:

 

file: array_merge_recursive.php
url: http://localhost:88/array/array_merge_recursive.php
<?php

    $student = array('s1'=>'1st student', 's2'=>'2nd student', 's3'=>'3rd student');
    
    $new_student = array('s1'=>'1st new student', 's2'=>'2nd student', 's3'=>'3rd new student');
    
    $result1 = array_merge_recursive($student, $new_student);
    
    print_r($result1)
    
?>

 

    3. 键数组与值数组合并

    array_combine()函数可以将一个键数组与一个值数组合并,这两个数组需要长度相同,不能为空。如下:

 

file: array_combine.php
url: http://localhost:88/array/array_combine.php
<?php

    $short_name = array('MJ', 'RM', 'PP', 'MC', 'KD');

    $full_name = array('Michael Jackson', 'Rose Mary', 'Peter Pan', 'Mike chan', 'Kelvin Durant');
    
    $result = array_combine($short_name, $full_name);
    
    print_r($result);
    
?>

 

    4. 数组拆分

    array_slice()函数与array_splice()函数接受三个参数,第一个是输入数组,第二个是offset,第三个是length,用于从输入数组截取offset开始,截取length长度的元素,以数组形式返回。length可以为正数或负数。如下:

 

file: array_slice.php
url: http://localhost:88/array/array_slice.php
<?php

    $short_name = array('MJ', 'RM', 'PP', 'MC', 'KD');

    // 从第2为开始,截取2个元素
    $result = array_slice($short_name, 2, 2);
    
    print_r($result);
    
    echo "<br/>==================<br/>";

    // 若length为负数,则截取到count($short_name)-|length|位置结束
    $result1 = array_slice($short_name, 2, -1);
    
    print_r($result1);
    
?>

 

    array_splice()函数与array_slice()函数类似,不同的是前者会删除数组中从offset开始到offset+length结束的所有元素,并以数组形式返回被删除的元素。

 

file: array_splice.php
url: http://localhost:88/array/array_splice.php
<?php

    $short_name = array('MJ', 'RM', 'PP', 'MC', 'KD');

    // 从第2为开始,截取2个元素
    $result = array_splice($short_name, 2, 2);
    
    print_r($result);
    
    echo "<br/>==================<br/>";
    
    $full_name = array('Michael Jackson', 'Rose Mary', 'Peter Pan', 'Mike chan', 'Kelvin Durant');

    // 若length为负数,则截取到count($short_name)-|length|位置结束
    $result1 = array_splice($full_name, 2, -1);
    
    print_r($result1);
    
?>

 

    5. 数组交集

    array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。

 

file: array_intersect.php
url: http://localhost:88/array/array_intersect.php
<?php

    $arr1 = array('MJ', 'RM', 'PP', 'MC', 'KD');
    
    $arr2 = array('MJ', 'RM', 'PP1', 'MC1', 'KD1');
    
    $arr3 = array('MJ', 'RM', 'PP2', 'MC2', 'KD2');
    
    // 比较时,只有两个元素有相同的数据类型时,才被认为相等。
    $intersect = array_intersect($arr1, $arr2, $arr3);
    
    print_r($intersect);
    
?>

 

    求关联数组的交集时,用到的array_intersect_assoc()与array_intersect()相同,只不过在考虑是会考虑数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值才被返回到结果数组中。如下:

 

file: array_intersect_assoc.php
url: http://localhost:88/array?array_intersect_assoc.php
<?php

    $arr1 = array('MJ'=>'Michael Jackson', 'RM'=>'Rose Mary', 'PP'=>'Peter Pan');
    
    $arr2 = array('MJ'=>'Michael Jackson', 'ML'=>'Mary Lee', 'RM'=>'Rose Mary');
    
    // 只有键和值都相等的才会被返回
    $intersect = array_intersect_assoc($arr1, $arr2);
    
    print_r($intersect);
    
?>

 

    6. 数组差集

    array_diff()函数返回出现在第一个数组中但其他输入数组中没有的值。这个函数的功能与array_intersect()相反。

 

file: array_diff.php
url: http://localhost:88/array/array_diff.php
<?php

    $arr1 = array('MJ', 'RM', 'PP', 'MC', 'KD');
    
    $arr2 = array('MJ', 'RM', 'PP1', 'MC1', 'KD1');
    
    $arr3 = array('MJ', 'RM', 'PP2', 'MC2', 'KD2');
    
    $diff = array_diff($arr1, $arr2, $arr3);
    
    print_r($diff);
    
?>

 

    求关联数组的差集时,用到的array_diff_assoc()与array_diff()相同,只不过在考虑是会考虑数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值才被返回到结果数组中。如下:

 

file: array_diff_assoc.php
url: http://localhost:88/array/array_diff_assoc.php
<?php

    $arr1 = array('MJ'=>'Michael Jackson', 'RM'=>'Rose Mary', 'PP'=>'Peter Pan');
    
    $arr2 = array('MJ'=>'Michael Jackson', 'ML'=>'Mary Lee', 'RM'=>'Rose Mary');
    
    // 只有键和值都相等的才会被返回
    $diff = array_diff_assoc($arr1, $arr2);
    
    print_r($diff);
    
?>

 

    还有其他的shuffle()函数、array_chunk()函数、array_sum()函数用得相对较少,就不再讲述。


    本文地址: http://ryan-d.iteye.com/blog/1566777

分享到:
评论

相关推荐

    PHP开发笔记系列(九)- 数组(三)

    在本篇"PHP开发笔记系列(九)- 数组(三)"中,我们将深入探讨PHP数组的高级用法,包括关联数组、多维数组以及数组函数的使用。 一、关联数组 关联数组是PHP数组的一种类型,其中的键和值之间存在关联关系,键可以...

    PHP开发笔记系列(九)- 数组(一)

    在PHP开发过程中,数组是一种非常重要的数据结构,它允许我们存储多个值在一个变量中,每个值都有一个唯一的键作为标识。本篇笔记将探讨PHP数组的基础知识,包括数组的创建、访问、遍历以及常见的操作。 1. **数组...

    PHP的学习笔记.pdf

    PHP是一种广泛使用的开源服务器端脚本语言,非常适合网络开发,可以嵌入到HTML中,处理各种复杂的数据类型,并生成动态网页内容。以下是从提供的文件内容中梳理出的PHP学习笔记知识点: 1. PHP常用输出语句: - ...

    PHP开发笔记系列(八)- 上传与下载

    在PHP开发过程中,上传与下载功能是常见的需求,特别是在构建Web应用时。本文将深入探讨这一主题,结合实际示例来解析PHP如何处理文件的上传和下载操作。 首先,我们来了解一下PHP文件上传的基本原理。当用户通过...

    PHP开发笔记系列(一)-PDO使用

    在PHP开发过程中,数据库操作是不可或缺的一部分,而PDO(PHP Data Objects)是PHP提供的一种数据库访问接口,旨在提供一种统一的、高效的、安全的方式来连接多种数据库。本篇笔记将深入探讨PHP PDO的使用,帮助...

    php学习笔记 [预定义数组(超全局数组)]

    使用超全局数组是PHP开发中一项基础且核心的技能,掌握它们对理解PHP的工作方式和开发安全、高效的Web应用至关重要。在实际的开发过程中,开发者需要根据不同的应用场景选择合适的超全局数组来使用。

    php-paper-开发笔记

    在PHP开发笔记中,我们可以期待以下主题的详细讲解: 1. **基础语法**:包括变量声明、数据类型、控制结构(条件语句、循环语句)、函数定义与调用、字符串和数组的操作等。 2. **面向对象编程**:类与对象的概念...

    达内学习笔记----SMARTY笔记.docx

    本篇笔记详细梳理了SMARTY的关键概念、配置方法以及各种功能的使用。 首先,SMARTY的重要特性在于其以变量为中心,通过变量来传递数据。它具有快速解析、一次性模板解析、模板更新后自动重解析、自定义定界符、支持...

    PHP语言基础学习笔记-php函数大全笔记

    ### PHP语言基础学习笔记-php函数大全笔记 #### 一、PHP概述与基本概念 - **PHP简介**: - PHP(Hypertext Preprocessor,原名Personal Home Page)是一种广泛使用的开源服务器端脚本语言,特别适合Web开发,并且...

    韩顺平php系列(源代码+笔记)

    《韩顺平PHP系列》是一套深受初学者和进阶者欢迎的PHP学习资源,包含了韩顺平老师的教学源代码和笔记。这个压缩包提供的内容虽然不完整,但依然能够为学习者提供丰富的PHP编程知识。 PHP(Hypertext Preprocessor,...

    韩顺平 php 从入门到精通 笔记(001-110讲)

    这些笔记为初学者提供了一个良好的起点,涵盖了PHP开发所需的基础知识,包括HTML结构、超链接、图像和表格的使用。随着学习的深入,还会涉及PHP语法、变量、函数、数组、控制结构、类和对象、错误处理、数据库交互等...

    泰牛PHP笔记

    通过【泰牛PHP笔记】,学习者可以系统地掌握PHP的核心概念和技术,进一步提升Web开发能力。结合韩顺平老师的视频教程,理论与实践相结合,学习效果更佳。这份笔记是PHP初学者和进阶者的宝贵资源,鼓励大家互相分享,...

    phpticle-in-dictionary-oJ开发笔记

    【标题】"phpticle-in-dictionary-oJ开发笔记"涉及的是一个PHP开发项目,可能是一个用于处理文本或文章的工具,特别强调了字典排序(dictionary order)的功能。这通常意味着程序会按照字母顺序对英文文章进行排序,...

    韩顺平149集php从入门到精通笔记+其他资源

    - 数组创建与遍历:了解不同类型的数组(索引数组、关联数组)以及遍历数组的方法。 - 数组函数:使用array_push、array_pop、array_merge等函数进行数组操作。 5. **字符串处理** - 字符串操作函数:如substr、...

    PHP中常用的数组操作方法笔记整理

    数组操作是日常开发中不可或缺的部分,下面我们将深入探讨PHP中常用的数组操作方法。 **一、数组的定义** 在PHP中,我们可以使用两种方式定义数组: 1. 使用`array()`函数: ```php $users = array('phone', '...

    韩顺平php全套笔记.doc )

    ### 韩顺平PHP全套笔记知识点概览 #### 一、HTML基础 - **HTML简介**:HTML(HyperText Markup Language),即超文本标记语言,是一种标准的普适性标记语言,主要用于创建Web页面。 - **HTML运行原理**: - HTML...

    【基础篇】第11篇:PHP代码审计笔记--变量覆盖漏洞1

    【PHP代码审计笔记--变量覆盖漏洞1】 在PHP编程中,变量覆盖漏洞是一个常见的安全问题,它涉及到程序中变量的不当处理,使得攻击者能够通过输入数据改变原本不应该被修改的变量值。本文将深入探讨几种导致变量覆盖...

Global site tag (gtag.js) - Google Analytics