PHP 基础知识-数组
PHP 的数组主要分为:
- 索引数组 - 带有数字索引的数组
- 关联数组 - 带有指定键的数组
- 多维数组 - 包含一个或多个数组的数组
索引是自动分配的(索引从 0 开始):
第一种:
$cars=array("Volvo","BMW","SAAB");
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
count() 函数用于返回数组的长度(元素数):<?php
$cars=array("Volvo","BMW","SAAB");
echo count($cars);
?>
遍历索引数组
如需遍历并输出索引数组的所有值,您可以使用 for 循环,就像这样:
<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars); for($x=0;$x<$arrlength;$x++) {
echo $cars[$x];
echo "<br>";
}
?>
PHP 关联数组
关联数组是使用您分配给数组的指定键的数组。
有两种创建关联数组的方法:
第一种:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
遍历关联数组
如需遍历并输出关联数组的所有值,您可以使用 foreach 循环,就像这样:
实例:
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43"); foreach($age as $x=>$x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
<?php
$array = array("a", "b","c"); //定义数组
$array[] = "Simon"; //增加一个新的数组元素
print_r($array); //输出数组
?>
<?php
$array = array("a", "b","c"); //定义数组
$array[9] = "Simon"; //增加一个新的数组元素
print_r($array); //输出数组
?>
<?php
//创建一个简单的数组
$array = array(0=>1, 1=>2, 2=>3, 3=>4, 6=>5);
print_r($array);
//现在把数组中键为2的值更新为100
$array[2] = 100;
print_r($array);
//现在添加一个键
$array["X"] = 50;
print_r($array);
//现在删除所有键,但保持数组本身的结构
foreach($array as $i => $value)
{
unset($array[$i]);
}
print_r($array);
//再添加一个键
$array[] = 25;
print_r($array);
//使用array_values函数进行重新索引
$array = array_values($array);
$array[] = 13;
print_r($array);
?>
一、数组操作的基本函数
数组的键名和值
array_values($arr); 获得数组的值
array_keys($arr); 获得数组的键名
array_flip($arr); 数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
in_array("apple",$arr); 在数组中检索apple
array_search("apple",$arr); 在数组中检索apple ,如果存在返回键名
array_key_exists("apple",$arr); 检索给定的键名是否存在数组中
isset($arr[apple]): 检索给定的键名是否存在数组中 数组的内部指针
current($arr); 返回数组中的当前单元
pos($arr); 返回数组中的当前单元
key($arr); 返回数组中当前单元的键名
prev($arr); 将数组中的内部指针倒回一位
next($arr); 将数组中的内部指针向前移动一位
end($arr); 将数组中的内部指针指向最后一个单元
reset($arr; 将数组中的内部指针指向第一个单元
each($arr); 将返回数组当前元素的一个键名/值的构造数组,并使数组指针向前移动一位
list($key,$value)=each($arr); 获得数组当前元素的键名和值 数组和变量之间的转换
extract($arr);用于把数组中的元素转换成变量导入到当前文件中,键名当作变量名,值作为变量值
注:(第二个参数很重要,可以看手册使用)使用方法 echo $a;
compact(var1,var2,var3);用给定的变量名创建一个数组 二、数组的分段和填充
数组的分段
array_slice($arr,0,3); 可以将数组中的一段取出,此函数忽略键名
array_splice($arr,0,3,array("black","maroon")); 可以将数组中的一段取出,与上个函数不同在于返回的序列从原数组中删除 分割多个数组
array_chunk($arr,3,TRUE); 可以将一个数组分割成多个,TRUE为保留原数组的键名 数组的填充
array_pad($arr,5,'x'); 将一个数组填补到制定长度 三、数组与栈
array_push($arr,"apple","pear"); 将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
array_pop($arr); 将数组栈的最后一个元素弹出(出栈) 四、数组与列队
array_shift($arr);数组中的第一个元素移出并作为结果返回(数组长度减1,其他元素向前移动一位,数字键名改为从零技术,文字键名不变)
array_unshift($arr,"a",array(1,2));在数组的开头插入一个或多个元素 五、回调函数
array_walk($arr,'function','words'); 使用用户函数对数组中的每个成员进行处理(第三个参数传递给回调函数function)
array_mpa("function",$arr1,$arr2); 可以处理多个数组(当使用两个或更多数组时,他们的长度应该相同)
array_filter($arr,"function"); 使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变
array_reduce($arr,"function","*"); 转化为单值函数(*为数组的第一个值) 六、数组的排序
通过元素值对数组排序
sort($arr); 由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
rsort($arr); 由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
usort($arr,"function"); 使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
asort($arr); 由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
arsort($arr); 由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
uasort($arr,"function"); 使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序 通过键名对数组排序
ksort($arr); 按照键名正序排序
krsort($arr); 按照键名逆序排序
uksort($arr,"function"); 使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个) 自然排序法排序
natsort($arr); 自然排序(忽略键名)
natcasesort($arr); 自然排序(忽略大小写,忽略键名) 七、数组的计算
数组元素的求和
array_sum($arr); 对数组内部的所有元素做求和运算 数组的合并
array_merge($arr1,$arr2); 合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名,后面的不会做覆盖操作,而是附加到后面)
“+”$arr1+$arr2; 对于相同的键名只保留后一个
array_merge_recursive($arr1,$arr2); 递归合并操作,如果数组中有相同的字符串键名,这些值将被合并到一个数组中去。如果一个值本身是一个数组,将按照相应的键名把它合并为另一个数组。当数组 具有相同的数组键名时,后一个值将不会覆盖原来的值,而是附加到后面 数组的差集
array_diff($arr1,$arr2); 返回差集结果数组
array_diff_assoc($arr1,$arr2,$arr3); 返回差集结果数组,键名也做比较 数组的交集
array_intersect($arr1,$arr2); 返回交集结果数组
array_intersect_assoc($arr1,$arr2); 返回交集结果数组,键名也做比较 八、其他的数组函数
range(0,12); 创建一个包含指定范围单元的数组
array_unique($arr); 移除数组中重复的值,新的数组中会保留原始的键名
array_reverse($arr,TRUE); 返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名
//srand((float)microtime()*10000000); 随机种子触发器
array_rand($arr,2); 从数组中随机取出一个或 多个元素
shuffle($arr); 将数组的顺序打乱
PHP 基础知识-数组的更多相关文章
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...
- javascript基础知识-数组
1.javascript创建数组时无需声明数组大小或者在数组大小变化时重新分配 2.javascript数组是无类型的 3.数组元素不一定要连续 4.针对稀疏数组,length比所有元素的索引都要大 ...
- java基础知识—数组
1.数组:是一个变量,存储相同数据类型的一组数据. 2.数据的优点:减少代码量.易查找. 3.数组的使用步骤: 1)声明数组:int scores []: 2)开辟空间:scores = new in ...
- C#基础知识-数组_ArrayList_List(九)
之前两篇文档讲述了C#中的面向对象的概念,其实这个概念对于很多种语言都是通用的,只不过每种语言具体实现的过程方法不一样,比如Java.C++.python等,这些都是很流行的面向对象的语言在编程语言排 ...
- 基础知识系列☞C#中数组Array、ArrayList和List三者的区别
数组() #region 数组 //初始化方式_0:先声明再赋值 ]; weekDays_0[] = "Sun"; weekDays_0[] = "Mon"; ...
- PHP基础入门(四)---PHP数组实用基础知识
PHP数组 数组是特殊的变量,它可以同时保存一个以上的值. ***关键词:数组基础.数组遍历.超全局数组.数组功能.数组函数. 下面来和大家分享一下有关PHP的数组基础知识,希望对你PHP的学习有所帮 ...
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- PHP 数组基础知识
php 数组基础知识function abc($a,$b,$c = 0){ echo $a,$b,$c;}abc(1,3); //调用方法 ////可变参数function def(){ $arr = ...
随机推荐
- 使用SWO代替UART,实现Printf打印功能
JTAG接口中,有个SWO引脚,一直没有在意,也没有去研究过是干嘛用的.直到发现ST-LINK V2-1上也有个SWO引脚,于是去研究学习它的作用,用起来相比UART方得便多. 本文内容已经整理成PD ...
- Windows 10系统永久关闭Windows Defender Antivirus防病毒程序方法
Win + R 键运行 gpedit.msc 找到 计算机配置 -> 管理模板 -> Windows 组件 -> Windows Defender 防病毒程序 右边双击 “关闭Win ...
- luoguP1058:立体图 (真的不是娱乐向_(:з」∠)_)
题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备给小朋友们讲解立体图,请你帮他画出立体图. 小渊有一块面积为m*n的矩形区域,上面有m*n个边长为1的格子,每 ...
- ng接口API开发文档
接口版本:v1 接口协议:请商户对接使用对应的转账接口API和免转接口API,商户只能使用菜单对应的API,否则接口会调用失败.左侧菜单未注明的接口免转钱包和转账钱包可以共同使用所有采集均按照北京时间 ...
- 我叫Tomcat:一款web服务器
我叫Tomcat:一款web服务器 如何将我们的 Java 代码,运行在网络上,初学时,首先接触到的一般都是Servlet以及Jsp(或略过Jsp)而 Tomcat 就是这两者的容器,帮你处理动态网页 ...
- Markdown 空格详细介绍
它叫不换行空格,全称No-Break Space,它是最常见和我们使用最多的空格,大多数的人可能只接触了 ,它是按下space键产生的空格.在HTML中,如果你用空格键产生此空格,空格是不会累加的 ...
- [MA] 有关 Likelihood
当提到 Linear Regression 或是 Logistic regression 等关键词时,都会涉及一个概念,叫做 Likelihood Function 以及 Maximum Likeli ...
- 红帽linux系统开机自启动脚本。
其实很多东西在最后完成以后会觉得也就那样,有意思的是探究的过程. 前段时间老板要求把一个程序做成linux系统开机自启动脚本的模式. 首先你需要写一个脚本. 我这边建立了一个.sh的脚本,就是用脚本启 ...
- 【爬虫集合】抖音API分析
1. 分析接口 Charles注册码 Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4 抖音API分析 抖音.猫眼网页 ...
- oracle查询十分钟之前的数据
select * from TABLE as of timestamp sysdate - 10/1440 t WHERE ColName='1111'; TABLE:表名 WHERE:查询子句 sy ...