热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP学习笔记之数组值及数组遍历和排序

数组值的操作1值的析取PHP中,用list来析取数组中的值,如list($a,$b)$array,如果list中的值多于数组个数,list中多余的值会设为NULL,

数组值的操作

1.值的析取

PHP中,用list来析取数组中的值,如list($a, $b) = $array,如果list中的值多于数组个数,list中多余的值会设为NULL,也可以用逗号来跳过数组中的值,如list($a, ,$b) = $array。

2.划分数组

如果想取得子数组,可以用array_slice(array, offset, length);来取得。它返回一个新的下标从0开始的数组。如果原数组的下标是字符串,好像是没有什么意义的,最好不要用,可以用array_splice来取得子串。

3.将数组分为多个数组

用array_chunk可以把数组分成一个二维数组。详细的可以通过链接看官方的说明。

4.键和值

array_keys($array),取得由数组索引组成的数组

array_value($array),取得由数组值组成的数组,索引从0开始重新分配。

array_key_exists($key, array),元素是否存在检查。

array_splice, 删除插入元素。

5.数组和变量之间的转换

extract(array) 把数组变成变量

compact() 把变量变成数组

6.数组的查找

in_array(array, ) 返回元素是否在数组中存在。

array_search() 返回被找到元素的索引。

7.整个数组函数

array_ sum() 计算数组的和。

array_ merge() 合并两个数组。

array_ diff() 两个数组之间的不同值。

array_ filter() 过滤元素

8.集合、堆栈、队列

array_ unique() 取两个数组的合集,如果值相同,保留前一个数组的索引。

array_ intersect() 取两个数级的交集,保留第一个数组的索引。

array_ push() 加入堆栈。

array_ pop() 弹出堆栈。

array_ shift() 加入队列。

array_ unshift() 弹出队列。

1.简单的遍历

PHP中,数组最简单的遍历方法莫过于for和foreach了,其中foreach有两种写法,一种只遍历值、另一种遍历索引和值,具体可以看如下代码.

  1. $test01 = array('a''b''c'); 
  2. // for 
  3. for ($i = 0; $i < count($test01); $i++) {      
  4.     echo $test01[$i];  
  5. }  
  6. // foreach value only  
  7. foreach ($test01 as $value) { 
  8.     echo $value;  
  9. }  
  10. // foreach key and value  
  11. $test01 = array(&#39;a&#39; => &#39;aaaa&#39;&#39;b&#39; => &#39;bbbb&#39;&#39;c&#39; => &#39;cccc&#39;); 
  12. foreach ($test01 as $key => $value) { 
  13.     echo "$key => $value"
  14. }  

2.迭代器遍历

PHP中,迭代遍历主要要用到以下函数。

current() 迭代的当前元素。

reset() 重新移动到第一个元素并返回它。

next() 移动到下一个元素并返回它。

prev() 移动到上一个元素并返回它。

end() 移动到最后一个元素并返回它。

each() 以数组的形式返回当前元素的索引和值,并移动到下一个迭代。

key() 返回当前的索引。

array_ walk() 为每一个元素调用函数。

array_ reduce() 为每一个元素依次计算。

实例代码如下:

  1. $test01 = array(&#39;a&#39; => &#39;aaaa&#39;&#39;b&#39; => &#39;bbbb&#39;&#39;c&#39; => &#39;cccc&#39;); 
  2. while (list($key$value) = each($test01)) { 
  3.     echo "$key => $value" . "n"
  4. array_walk($test01, walk_test); 
  5. function walk_test($key$value) { 
  6.     echo "walk: $key => $value" . "n"
  7. $test02 = array(1, 2, 3, 4, 5); 
  8. echo array_reduce($test02, reduce_test); 
  9. function reduce_test($run_result$current_value) { 
  10.     return $run_result + $current_value * $current_value

3.数组的排序

在PHP中,排序方式有三种,通过索引排序、通过值排序(不保留原索引)、通过值排序(保留原索引)。每种又分为升序、降序以及用户定义顺序三个函数。它们分别如下:

通过索引排序:①升序 ksort() ②降序 krsort() ③用户定义顺序 uksort()

不保留原索引值排序:①升序 sort() ②降序 rsort() ③用户定义顺序 usort()

保留原索引值排序:①升序 asort() ②降序 arsort() ③用户定义顺序 uasort()

在PHP中,也可以用array_multisort来一次排序多个数组,不过项目中可能用得比较少。

翻转数组,把数字索引翻转,索引重新从0开始:array_reverse()

把索引和值调换:array_flip()

随机顺序:shuffle()


推荐阅读
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 本文详细介绍了如何在不同操作系统和设备上设置和配置网络连接的IP地址,涵盖静态和动态IP地址的设置方法。同时,提供了关于路由器和机顶盒等设备的IP配置指南。 ... [详细]
  • 在年前忙碌的家务和年后走亲访友之后,终于有时间重新投入到编程的世界中。年前遇到了连通器问题的困扰,希望今晚能够顺利解决。新的一年,新的开始,期待在技术领域取得更大的进步。 ... [详细]
  • Android Studio 安装与配置指南
    本教程详细介绍了如何下载并安装 Android Studio,包括设置 SDK 路径和优化启动性能的方法。通过这些步骤,您可以顺利地开始开发 Android 应用。 ... [详细]
  • 本文详细介绍了福昕软件公司开发的Foxit PDF SDK ActiveX控件(版本5.20),并提供了关于其在64位Windows 7系统和Visual Studio 2013环境下的使用方法。该控件文件名为FoxitPDFSDKActiveX520_Std_x64.ocx,适用于集成PDF功能到应用程序中。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了如何在PHP中实现基于概率的随机抽奖功能。通过实例代码,解释了抽奖逻辑、奖品设置及结果统计的方法。适合PHP开发者参考学习。 ... [详细]
  • 本文对宋代词人朱雍的《迷神引》进行翻译和赏析,深入探讨其词作的艺术特色与情感表达。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 本文介绍如何使用PHP在WordPress中根据分类类别ID或名称获取所有相关文章,提供详细的方法和代码示例。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
author-avatar
5257wals_220
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有