【php快速上手(八)】

目录

  • PHP快速上手(八)
    • PHP 数组
      • 1. 数组的定义
      • 2. 数组的操作
      • 3. 多维数组
      • 4. 数组遍历
    • PHP数组排序
      • 1. 排序索引数组
      • 2. 排序关联数组
      • 3. 自然排序
      • 4. 自定义排序

PHP快速上手(八)

PHP 数组

在 PHP 中,数组是一种数据结构,可以存储多个类型的值,包括标量值(如整数、浮点数、字符串等)和复杂值(如对象、其他数组等)。数组可以是索引数组或关联数组,也可以是多维数组。下面详细介绍 PHP 中数组的定义、使用和操作。

1. 数组的定义

在 PHP 中,你可以使用 array() 函数或方括号 [] 语法定义一个数组。

  • 索引数组
    索引数组是通过整数索引访问元素的数组。索引通常从 0 开始。
    示例
    // 使用 array() 函数定义
    $fruits = array("apple", "banana", "cherry");
    
    // 使用方括号语法定义
    $numbers = [1, 2, 3, 4, 5];
    
    echo $fruits[0]; // 输出 "apple"
    echo $numbers[2]; // 输出 3
    
  • 关联数组
    关联数组是通过键值对访问元素的数组。键可以是字符串或整数。
    示例
    // 使用 array() 函数定义
    $person = array("name" => "Alice", "age" => 30);
    
    // 使用方括号语法定义
    $car = [
        "make" => "Toyota",
        "model" => "Corolla",
        "year" => 2020
    ];
    
    echo $person["name"]; // 输出 "Alice"
    echo $car["make"]; // 输出 "Toyota"
    

2. 数组的操作

PHP 提供了许多函数和方法来操作数组,包括添加、删除、合并、排序、搜索等。

  • 添加元素
    你可以通过索引或键直接向数组添加元素。
    示例
    $fruits = ["apple", "banana"];
    $fruits[] = "cherry"; // 添加到数组末尾
    $fruits[2] = "orange"; // 指定索引添加元素
    
    $person = ["name" => "Alice"];
    $person["age"] = 30; // 添加键值对
    
  • 删除元素
    你可以使用 unset() 函数删除数组中的元素。
    示例
    $fruits = ["apple", "banana", "cherry"];
    unset($fruits[1]); // 删除索引 1 的元素("banana")
    
    $person = ["name" => "Alice", "age" => 30];
    unset($person["age"]); // 删除键 "age" 的元素
    
  • 合并数组
    你可以使用 array_merge() 函数合并两个或多个数组。
    示例
    $array1 = ["a" => 1, "b" => 2];
    $array2 = ["b" => 3, "c" => 4];
    
    $mergedArray = array_merge($array1, $array2);
    print_r($mergedArray);
    
  • 搜索数组
    你可以使用 in_array() 函数搜索数组中的值,以及 array_search() 函数搜索数组中的键。
    示例
    $fruits = ["apple", "banana", "cherry"];
    $found = in_array("banana", $fruits); // 检查 "banana" 是否在数组中
    $index = array_search("banana", $fruits); // 查找 "banana" 在数组中的索引
    
    echo $found ? "Found" : "Not found"; // 输出 "Found"
    echo "Index: " . $index; // 输出 "Index: 1"
    

3. 多维数组

多维数组是数组中的元素是其他数组。你可以通过嵌套数组来表示复杂的数据结构。

示例

$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

echo $matrix[0][1]; // 输出 2

$users = [
    ["name" => "Alice", "age" => 30],
    ["name" => "Bob", "age" => 25]
];

echo $users[1]["name"]; // 输出 "Bob"

4. 数组遍历

你可以使用 foreach 循环遍历数组。

示例

$fruits = ["apple", "banana", "cherry"];

foreach ($fruits as $index => $fruit) {
    echo "Index $index: $fruit\n";
}

$person = ["name" => "Alice", "age" => 30];

foreach ($person as $key => $value) {
    echo "$key: $value\n";
}

这些是 PHP 中数组的基本概念和操作。数组是 PHP 中非常重要的数据结构,可以存储和组织各种类型的数据。

PHP数组排序

在 PHP 中,你可以使用多种方法对数组进行排序,包括按键排序、按值排序、保持键值关系排序、自然排序等。PHP 提供了一系列函数来完成不同类型的排序操作。下面详细介绍 PHP 中数组排序的不同方法及其用法:

1. 排序索引数组

索引数组可以使用 sort() 和 rsort() 函数按值排序。

  • sort()
    sort() 函数按升序对数组的值进行排序,并保持原始索引的顺序。
    示例
    $fruits = ["banana", "apple", "cherry"];
    sort($fruits);
    print_r($fruits);
    // 输出: Array ( [0] => apple [1] => banana [2] => cherry )
    
  • rsort()
    rsort() 函数按降序对数组的值进行排序。
    示例
    $numbers = [3, 1, 4, 2, 5];
    rsort($numbers);
    print_r($numbers);
    // 输出: Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )
    

2. 排序关联数组

关联数组可以使用 asort() 和 arsort() 函数按值排序,使用 ksort() 和 krsort() 函数按键排序。

  • asort()
    asort() 函数按升序对数组的值进行排序,并保持键值关系。
    示例
    $person = ["name" => "Alice", "age" => 30, "city" => "New York"];
    asort($person);
    print_r($person);
    // 输出: Array ( [city] => New York [name] => Alice [age] => 30 )
    
  • arsort()
    arsort() 函数按降序对数组的值进行排序,并保持键值关系。
    示例
    $grades = ["Alice" => 85, "Bob" => 92, "Carol" => 78];
    arsort($grades);
    print_r($grades);
    // 输出: Array ( [Bob] => 92 [Alice] => 85 [Carol] => 78 )
    
  • ksort()
    ksort() 函数按升序对数组的键进行排序,并保持值的顺序。
    示例
    $person = ["name" => "Alice", "age" => 30, "city" => "New York"];
    ksort($person);
    print_r($person);
    // 输出: Array ( [age] => 30 [city] => New York [name] => Alice )
    
  • krsort()
    krsort() 函数按降序对数组的键进行排序,并保持值的顺序。
    示例
    $grades = ["Alice" => 85, "Bob" => 92, "Carol" => 78];
    krsort($grades);
    print_r($grades);
    // 输出: Array ( [Carol] => 78 [Bob] => 92 [Alice] => 85 )
    

3. 自然排序

自然排序是按字符串的自然顺序排序,PHP 提供了 natsort() 和 natcasesort() 函数来实现。

  • natsort()
    natsort() 函数按自然顺序对数组的值排序。
    示例
    $files = ["file10.txt", "file2.txt", "file1.txt"];
    natsort($files);
    print_r($files);
    // 输出: Array ( [2] => file1.txt [1] => file2.txt [0] => file10.txt )
    
  • natcasesort()
    natcasesort() 函数是 natsort() 的不区分大小写版本。
    示例
    $names = ["Alice", "bob", "Carol"];
    natcasesort($names);
    print_r($names);
    // 输出: Array ( [0] => Alice [2] => Carol [1] => bob )
    

4. 自定义排序

你可以使用 usort()、uasort() 和 uksort() 函数自定义数组的排序方式。这些函数需要一个回调函数来定义排序规则。

  • usort()
    usort() 函数使用回调函数按自定义规则排序数组的值。
    示例
    $numbers = [3, 1, 4, 2, 5];
    usort($numbers, function($a, $b) {
        return $a - $b; // 升序排序
    });
    print_r($numbers);
    // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
    
  • uasort()
    uasort() 函数使用回调函数按自定义规则排序数组的值,并保持键值关系。
    示例
    $people = ["Alice" => 30, "Bob" => 25, "Carol" => 35];
    uasort($people, function($a, $b) {
        return $b - $a; // 降序排序
    });
    print_r($people);
    // 输出: Array ( [Carol] => 35 [Alice] => 30 [Bob] => 25 )
    
  • uksort()
    uksort() 函数使用回调函数按自定义规则排序数组的键。
    示例
    $people = ["Alice" => 30, "Bob" => 25, "Carol" => 35];
    uksort($people, function($a, $b) {
        return strcmp($a, $b); // 按键升序排序
    });
    print_r($people);
    // 输出: Array ( [Alice] => 30 [Bob] => 25 [Carol] => 35 )
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/555062.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python】super()函数的用法详解!

今天分享一个我在实际项目中用到过的super()函数,来说说该函数的主要功能是什么,简单来说,super()函数是用来做调用父类的一个方法。 super() 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题&#xf…

第十五届蓝桥杯复盘python大学A组——试题C 数字诗意

思路 数字可以分为 有诗意的数字可以写成 (ij)(j-i1)/2 ( i、j都是正整数 ) ij 、j-i1 的奇偶性不同(因为i、j都是正整数) 因此, 如果一个数是奇数就一定有诗意 eg.312 ,523,734,945… 原因:根据上述分…

什么是yum、以及yum源

文章目录 yum介绍软件安装/卸载生态 yum Linux中需要对对工具、指令、程序进行安装、检查、卸载等工作,需要使用到yum。 Linux中安装软件的方式 源代码安装rpm包直接安装yum安装 / apt-get安装 介绍 yum是Linux预装的一个指令,搜索、下载、安装对应…

2.6 类型安全配置属性

无论是Propertes配置还是YAML配置,最终都会被加载到Spring Environment中。 Spring提供了注解Value以及EnvironmentAware接口来将Spring Environment 中的数据注入到属性上,SpringBoot对此进一步提出了类型安全配置属性(Type-safeConfiguration Propert…

从计算机视觉到生命科学

人工智能技术的快速发展正在深刻影响和重塑我们的生活。作为AI领域的前沿方向,多模态大模型凭借其强大的跨域学习和推理能力,在众多行业和科学领域展现出广阔的应用前景。多模态AI指的是能够同时处理和整合文本、图像、音频、视频等不同模态数据的智能系统。这种融合不同信息源…

uni-admin中引入uni-cms的缺少schema及uni-media-library缺少云函数的问题

1. 在管理端运行提示一些表找不到,因为是uni-admin关联的uni-starter的服务空间,在uni-admin的uniCloud中没有内容,在uni-starter的uniCloud中也没有发现对应的表,后面干脆在云端找到对应的表之后新建了,然后再下载到本…

网工内推 | 14薪!安全服务工程师,上市公司,CISP认证优先

01 远江盛邦 招聘岗位:安全服务工程师 职责描述: 1、负责对客户网络、系统进行渗透测试,漏洞验证、安全评估和安全加固; 2、负责对监督单位的系统安全问题进行监督,并督察改进; 3、对监管单位的安全告警、…

机器人流量激增:恶意机器人活动升级与新型规避技术挑战企业安全防御

近日,根据Cyber News引用Thales Imperva Bad Bot发布的最新研究报告,揭示了一个令人警醒的现象:2023年,互联网总流量中的49.6%由机器人贡献,相较于上一年增长了2%,创下了自2013年监测以来的历史新高。这一显…

【性能测试】接口测试各知识第4篇:Jmeter 八大元件及执行顺序,学习目标【附代码文档】

接口测试完整教程(附代码资料)主要内容讲述:接口测试,学习目标学习目标,2. 接口测试课程大纲,3. 接口学完样品,4. 学完课程,学到什么,5. 参考:,1. 理解接口的概念。学习目标,RESTFUL1. 理解接口的概念,2.什么是接口测试…

我的2024年暑期三下乡实践宣传投稿之旅

身为2024年暑期大学生三下乡社会实践活动的一员,我肩负着学院赋予的对外信息宣传投稿考核任务。在这条特殊的宣传之路上,我经历了从之初摸着石头过河,一家家联系媒体的艰辛,到后来使用智慧软文发布系统网站进行投稿发文章的轻松转变。 刚开始,我对媒体投稿几乎一无所知。为了完…

力扣136. 只出现一次的数字

Problem: 136. 只出现一次的数字 文章目录 题目描述思路复杂度Code 题目描述 思路 由于题目要求使用线性时间复杂度和常量级的空间复杂度,再加上找重复元素这个特性,我们可以想到使用位运算来求解: 1.任何数与其本身异或得0,任何…

单车模型下Stanley循迹

文章目录 1 Stanley方法2 实现3 参考资料 1 Stanley方法 Stanley与pure pursuit方法都是基于几何的路径跟踪方法,pure pursuit的思想是要让车辆的后轴中心经过目标点,从而计算车辆的前轮转角。Stanley则除了利用横向跟踪误差外,还利用车辆的航…

CSS基础常用属性之颜色(如果想知道CSS的颜色知识点,那么只看这一篇就足够了!)

前言:在我们学习CSS的时候,主要学习选择器和常用的属性,而这篇文章讲解的就是最基础的属性——颜色。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 目录 1.颜色属性 【1】使用颜色关键词表…

《苍穹外卖》Day01知识点记录

一、Yapi 网址为:https://yapi.pro/ 二、Swagger 1. 常用注解 通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性,常用注解如下: 注解说明Api用在类上,例如Controller,表示对类的说明ApiMod…

视频号小店的红利来了,跟谁打工不是打工,自己开店,给自己打工

大家好,我是电商花花。 自动抖音小店的飞速崛起,打破了电商何惧,给电商行业注入了新能量,新活力。 而作为一直想要进军电商的腾讯,自然也是不想放过这个机会,更是携着视频号带着视频号小店来电商讨一碗饭…

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day11】 —— MyBatis1

市面上主流ORM框架: EJB:重量级、高花费的ORM技术,支持JPA,尤其是EJB3低侵入式 的设计,增加了Annotation Hibernate:开源,支持JPA ,被选作JBoss的持久层解决方案 iBatis:”SQL Mappi…

CCF区块链论文录用资讯--ICSE 2024

ICSE是CCF A类会议 (软件工程/系统软件/程序设计语言) 其2024录用了13篇区块链论文 Smart Contract and DeFi Security Tools: Do They Meet the Needs of Practitioners? 智能合约和 DeFi 安全工具:它们满足从业者的需求吗? St…

node和go的列表转树形, 执行速度测试对比

保证数据一致性,先生成4000条json数据到本地,然后分别读取文本执行处理 node代码 node是用midway框架 forNum1:number 0forNum2:number 0//执行测试async index(){// 生成菜单列表// const menuList await this.generateMenuList([], 4000);const men…

多任务学习,在共享层,究竟在共享什么?

在多任务学习中,共享层所共享的主要是网络结构和参数。具体来说,当多个任务在共享层进行参数硬共享时,它们使用的是相同的网络结构(例如三层全连接神经网络),并且这些网络层的权重(weights&…

java新冠病毒密接者跟踪系统(springboot+mysql源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的新冠病毒密接者跟踪系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 新冠病毒密接者跟…