【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.mzph.cn/web/174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis延迟双删

什么是延迟双删? 做法:先删除redis,再更新数据库,延迟N秒后再删除一次redis。 延迟双删策略是分布式系统中数据库存储和缓存数据保持最终一致性的常用策略,但它不是强一致。其实不管哪种方案,都避免不了Red…

生存分析机器学习

生存分析:时间背后的数据价值! 💡 生存分析是一种研究现象或物体随时间推移而发生的变化的方法,可广泛应用于金融、医疗、保险、交通等领域,比如预测疾病复发风险、评估投资产品收益、估算保险赔付概率等。通过挖掘数…

excel里如何的科学计数法的数字转换成数值?

比如下图,要想把它们转换成3250跟1780,有什么快捷的办法吗? 科学计数法在excel里的格式,与我们常规在数学上写的有差异。这个转换可以这样做: 1.转换后的效果: 2.问题分析 题目中所附截图,单元…

vue3.0项目生成标签条形码(插件:jsbarcode)并打印(插件:Print.js)支持pda扫码枪扫描

文章目录 功能场景生成条形码设置打印功能踩坑 功能场景 功能场景:供应链中对一些货品根据赋码规则进行赋码,赋码之后生成根据赋码结果生成条形码,执行打印功能,贴在货品之上,打印之后可以用pda的手枪进行扫描&#x…

服务端渲染 --- 模板引擎

一、Apach 替换页面的内容 template.html <table><thead><tr><th onclick"javascript;sortTable(0);">名称</th><th class"detailsColumn" onclick"javascript:sortTable(1);">大小</th><th clas…

ROS 2边学边练(28)-- 将launch文件集合到ROS 2包中

前言 上一篇我们单独创建了文件夹&#xff08;可以任何路径&#xff09;&#xff0c;并在其中创建编写了一份launch文件&#xff0c;调用了小海龟例程&#xff0c;但通常情况下这并非是launch文件的典型应用场景&#xff0c;更多的是在ROS 2功能包中创建使用launch文件。 动动…

Java将List平均分成多少份或者按照指定大小进行分割

目录 1. 将List平均分成多少份2. 将List按照每份指定的大小进行分割3. 完整代码示例以及测试 前言&#xff1a;此方法其实就是将一个列表按照指定份数或者指定大小对数据列表进行分割&#xff0c;如果不能整除则会将剩余的放到最后一个数组 1. 将List平均分成多少份 /*** 将Li…

算法训练营第44天|完全背包 LeetCode 518.零钱兑换Ⅱ 337.组合总和Ⅱ

完全背包 题目链接&#xff1a; 完全背包 代码&#xff1a; #include<iostream> #include<vector> using namespace std;void test(vector<int>weight,vector<int>value,int bagweight){vector<int>dp(bagweight1,0);for(int i0;i<weight.…

从AdTech转战Martech,驰骛科技的PaaS之路

中国最早的Adtech公司之一&#xff0c;在被全资收购后&#xff0c;其创始团队又创立了一家Martech公司。赛道的变更也从侧面反映出中国营销技术市场的发展轨迹。 驰骛科技创始团队来自易传媒核心团队&#xff0c;驰骛科技创始人程华奕是易传媒创始人兼CTO&#xff0c;是中国最早…

现在给政府机关医院学校部队供货的方式有哪些?

给政府机关、医院、学校和部队供货的方式主要包括以下几种&#xff1a; 直接采购&#xff1a;政府机关、医院、学校和部队通过招标或直接与供应商进行谈判&#xff0c;确定采购的产品和价格。这种方式常见于大宗或重要物资的采购&#xff0c;能够确保采购过程的透明度和公正性…

使用 Citavi 和 NVivo 简化您的文献综述和研究分析

NVivo 是一款支持定性研究方法和混合研究方法的软件。它可以帮助您收集、整理和分析访谈、焦点小组讨论、问卷调查、音频等内容。NVivo&#xff08;1.0版&#xff09;是Windows和Mac的主要版本。遵循最新的主要版本NVivo 12&#xff08;Windows和Mac&#xff09;。 NVivo 强大…

Linux服务器硬件及RAID配置

一、服务器硬件 塔式服务器&#xff1a;最初的服务器形态之一&#xff0c;类似于传统的台式电脑&#xff0c;但具有更强的处理能力和稳定性&#xff0c;适合小型企业或部门使用。 机架式服务器&#xff1a;设计为可安装在标准化机架内的模块化单元&#xff0c;可以有效地节省空…

致敬我过去的30年

曾几何时&#xff0c;30岁是一个遥不可及年纪&#xff0c;可是&#xff0c;今年我30了。 用雷总的话来说&#xff0c;就是现在的我&#xff0c;一事无成。 的确&#xff0c;好像真是一事无成 曾几何时&#xff0c;我想办一个伟大的企业&#xff0c;像马斯克那样&#xff0c;立一…

jetson nx 外接按钮,实现开机功能

本文参考自https://blog.csdn.net/m0_59584375/article/details/128050175 首先第一步&#xff0c;要短接jetson nx背面的AUTO ON 和DISABLE引脚 可以用跳帽短接&#xff0c;也可以直接用一根杜邦线连接这两个针脚 AUTO ON 和DISABLE引如下图红色圈 跳帽的样子如下图 我是直…

Mabtech:与结核病相关的肽库

Mabtech 新研发出了三个涵盖结核蛋白&#xff08;EspC、ESAT-6、CFP-10&#xff09;的肽库&#xff0c;可以区分潜伏性结核病和活动性结核病的区别。所有肽库都经过验证&#xff0c;都可用于ELISpot、FluoroSpot实验。 1. EspC scanning pool ● EspC scanning pool包含来自结…

42-软件部署实战(下):IAM系统安全加固、水平扩缩容实战

IAM应用安全性加固 iam-apiserver、iam-authz-server、MariaDB、Redis和MongoDB这些服务&#xff0c;都提供了绑定监听网卡的功能。将服务绑定到内网网卡上。 我们也可以通过iptables来实现类似的功能&#xff0c;通过将安全问题统一收敛到iptables规则&#xff0c;可以使我…

速看!2024中国(厦门)国际康复医疗展览会

2024中国&#xff08;厦门&#xff09;国际康复医疗展览会 2024 China (Xiamen) International Rehabilitation Medical Exhibition 时 间&#xff1a;2024年8月13-15日 August 13-15, 2024 地 点&#xff1a;厦门国际会展中心 Xiamen International Conference & Exh…

Java工具类:批量发送邮件(带附件)

​ 不好用请移至评论区揍我 原创代码,请勿转载,谢谢! 一、介绍 用于给用户发送特定的邮件内容,支持附件、批量发送邮箱账号必须要开启 SMTP 服务(具体见下文教程)本文邮箱设置示例以”网易邮箱“为例,其他如qq邮箱或企业邮箱均可,只要在设置中对应开启SMTP及授权码等操…

Unity URP 2022 Release-Notes

&#x1f308;Unity URP 2022 Release-Notes 本文信息收集来自自动搜集工具&#x1f448; 版本更新内容2022.3.15URP: Building 3D Sample Scenes (URP) Project fails(UUM-57781)2022.3.14URP: Fixed partially corrupted Android screen when Vulkan display rotation durin…

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

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