0

0

php数组中一些实用的知识

零下一度

零下一度

发布时间:2017-06-27 11:05:37

|

1196人浏览过

|

来源于php中文网

原创

PHP数组

       数组是特殊的变量,它可以同时保存一个以上的值。

   ***关键词:数组基础、数组遍历、超全局数组、数组功能、数组函数。

 

立即学习PHP免费学习笔记(深入)”;

 

立即学习PHP免费学习笔记(深入)”;

 

立即学习PHP免费学习笔记(深入)”;

 

立即学习PHP免费学习笔记(深入)”;

下面来和大家分享一下有关PHP的数组基础知识,希望对你PHP的学习有所帮助~

 

立即学习PHP免费学习笔记(深入)”;

一、PHP数组基础部分

 

立即学习PHP免费学习笔记(深入)”;

PHP数组的分类


按照下标的不同,PHP数组分为关联数组和索引数组;
索引数组:下标从0开始,依次增长
关联数组:下标为字符串格式,每个下标字符串与数组的值一一关联对应(类似对象的键值对)

 

立即学习PHP免费学习笔记(深入)”;

代码演示:

1 $arr1 = array(1,2,3,4,5,6,7);//索引数组2 var_dump($arr1);3    4 $arr2 = array("one"=>1,"two"=>2,"three"=>3);//关联数组5 var_dump($arr2);6    7 $arr3 = array(1,"one"=>2,3,5=>4,5,6,"10.0"=>7,"08"=>8,"08"=>10,"hahah"=>9);8 var_dump($arr3);

 

立即学习PHP免费学习笔记(深入)”;

关于关联数组和索引数组


1、数组中,可以同时存在索引数组与关联数组。
array(1,2,3,"one"=>4);

 

立即学习PHP免费学习笔记(深入)”;

2、数组中,所有的索引数组,如果不加指定,会去掉关联项,默认增长(即,关联数组不占索引位);
array(1,2,"one"=>3,4,5);//1,2,4,5的索引--->0/1/2/3

 

立即学习PHP免费学习笔记(深入)”;

3、如果,关联数组的key,是纯十进制整数字符串,
则会将此数字转为索引数组的索引值;("10.0"/"08"等格式,仍然是关联数组,不转为索引)
array(1,2,"one"=>3,"9"=>4,"010"=>5);//1,2,4的索引--->0/1/9

 

立即学习PHP免费学习笔记(深入)”;

4、如果,手动指定关联数组的key,索引数组的下标,如果与前面已有的key或下标重复,则后制定的值会覆盖之前的值;
array(1,"one"=>2,0=>5,"one"=>6);--->打印数组,0=>5,"one"=>6

 

立即学习PHP免费学习笔记(深入)”;

5、如果手动指定索引数组下标,则后续自增长下标,会按照之前下标最大值,依次增长。
array(1,2,7=>3,4);--->1,2,3,4的下标--->0/1/7/8

 

立即学习PHP免费学习笔记(深入)”;

数组的声明方式


1、直接赋值声明
$arr[] = 1;
$arr[] = 1;
$arr[] = 1;
$arr[] = 1;
$arr[] = 1;
var_dump($arr);

2、[]字面量声明(PHP5.4版本之后能用)
$arr = [1,2,3,4,"one"=>5,6];
var_dump($arr);

3、Array()声明  没有new关键字
$arr = array(1,2,3,4,5);
var_dump($arr);

 

立即学习PHP免费学习笔记(深入)”;

数组元素的读取


PHP中,数组支持[]和{}读取下标。

多维数组

①数组的一个值,依然是一个数组,我们称这种数组为多维数组;
②多维数组,不要求所有的项都是数组,可以是数组与普通值的混合;
③多维数组,也不要求每个子数组的个数限制,可以是任意的长度。

使用多维数组,一定要注意,数组中分隔用逗号!
原则上,多维数组一般不超过3层使用!

 

立即学习PHP免费学习笔记(深入)”;

三维数组代码演示如下:

 1 $H51701 = array( 2 "group1"=>array( 3 array("name"=>"张三","age"=>14,"sex"=>"男"), 4 array("name"=>"李四","age"=>15,"sex"=>"男"), 5 array("name"=>"王二","age"=>13,"sex"=>"男") 6 ), 7 "group2"=>array( 8 array("name"=>"张三","age"=>15,"sex"=>"男"), 9 array("name"=>"李四","age"=>15,"sex"=>"男"),10 array("name"=>"王二","age"=>14,"sex"=>"男")11 ),12 "group3"=>array(13 array("name"=>"张三","age"=>14,"sex"=>"男"),14 array("name"=>"李四","age"=>18,"sex"=>"男"),15 array("name"=>"王二","age"=>24,"sex"=>"男")16 ),17 );18 var_dump($H51701);
二、数组遍历


1、使用for循环遍历数组

count($arr);用于统计数组元素的个数

for循环只能用于遍历,纯索引数组!
如果存在关联数组,count统计时会统计两种数组的总个数,使用for循环遍历混合数组,导致数组越界!

代码如下:

1 $arr = array(1,2,3,"one"=>4,5,6,7);2 $num = count($arr);3 echo"数组元素的个数{$num}
";4 for($i=0;$i<$num;$i++){5 echo "{$i}==>{$arr[$i]}
";6 }

 

立即学习PHP免费学习笔记(深入)”;

2、forEach循环遍历数组
foreach可以遍历任何类型的数组!

代码如下:

1 $arr = array(1,2,3,"one"=>4,5,6,7);2 foreach($arr as $key=>$item){3 echo "{$key}==>{$item}
";4 }

 

立即学习PHP免费学习笔记(深入)”;

下面我们来做一个数组遍历的小练习~看代码~

 1 $arr = array( 2 "group1"=>array( 3 array("name"=>"张三","age"=>14,"sex"=>"男"), 4 array("name"=>"李四","age"=>12,"sex"=>"男"), 5 array("name"=>"王二","age"=>18,"sex"=>"男") 6 ), 7 "group2"=>array( 8 array("name"=>"张三","age"=>14,"sex"=>"男"), 9 array("name"=>"李四","age"=>16,"sex"=>"男"),10 array("name"=>"王二","age"=>19,"sex"=>"男")11 ),12 "group3"=>array(13 array("name"=>"张三","age"=>14,"sex"=>"男"),14 array("name"=>"李四","age"=>12,"sex"=>"男"),15 array("name"=>"王二","age"=>13,"sex"=>"男")16 ),17 );18 19 foreach($arr as $key=>$value){20 echo "{$key}
"; 21 foreach($value as $key1=>$value1){22 echo "第".($key1+1)."个同学
";23 foreach($value1 as $key2=>$value2){24 echo "{$key2}==>{$value2}
";25 }26 echo"
";27 }28 echo"----------------------
";29 }

 

立即学习PHP免费学习笔记(深入)”;

3、使用list(),each(),while()遍历数组
list():用于将数组的每一个值,赋值给list函数的每一个参数。(list函数的参数,必须
eg:list($a,$b,$c) = [1,2,3]; --->$a=1; $b=2; $c=3;

注意
①list()在解析数组时,只解析索引数组;
②list可以通过空参数,选择性的解析数组的值;
list($a,,$b)=[1,2,3];-->$a=1;$b=3;

each():用于返回数组当前指针所在位的键值对!并将指针后移一位;
返回值:如果指针有下一位,返回一个数组。包含一个索引数组(0-键,1-值)和一个关联数组("key"-键,"value"-值);
如果指针没有下一位,返回false。

4、使用list()/each()/while()配合遍历数组※※※

1 while(list($key,$value) = each($arr)){2 echo "{$key}-->{$value}
";3 }4 reset($arr);

!!!数组使用each()遍历完一遍后,指针使用处于最后一位的下一位,即再用each(),始终返回false;
如果还需使用,需用reset($arr);函数,重置数组指针。

$arr = [1,2,3,4];
list($a,$b,$c,$d) = $arr;
echo "a-->{$a}
";

echo "b-->{$b}
";

echo "c-->{$c}
";

echo "d-->{$d}
";

while($a = each($arr))

①each($arr)返回数组或false;
②把数组或false赋值给$a;
③while判断$a如果是数组,继续执行下一位;
如果$a是false,终止循环。

phpshop
phpshop

phpShop 是一个PHP购物车应用软件,其主要目的是提供最简单的购物车,它易于定制成适合你的需求.但需要一些关于HTML, PHP, 和 SQL的基本知识

下载
 1 while($a = each($arr)){ 2 echo "{$a[0]}-->{$a[1]}
"; 3 echo "{$a['key']}-->{$a['value']}
"; 4 } 5 6 while(true){ 7 $a = each($arr); 8 if($a){ 9 echo "{$a[0]}-->{$a[1]}
";10 echo "{$a['key']}-->{$a['value']}
";11 }else{12 break;13 }14 }15 16 while(list($key,$value) = each($arr)){17 echo "{$key}-->{$value}
";18 } 19 reset($arr);

 

立即学习PHP免费学习笔记(深入)”;

5、使用数组指针遍历数组

①next:将数组指针,后移一位,并返回后一位的值,没有返回false
②prev:将数组指针,前移一位,并返回前一位的值,没有返回false
③end:将数组指针,移至最后一位,返回最后一位的值,空数组返回false
④reset:将数组指针,恢复到第一位,并返回第一位的值,空数组返回false
⑤key:返回当前指针所在位的键;
⑥current:返回当前指针所在位的键;

 1 $arr = [1,2,3,4,"one"=>5]; 2 while(true){ 3 echo key($arr); 4 echo "--"; 5 echo current($arr); 6 echo "
"; 7 if(!next($arr)){ 8 break; 9 }10 }11 reset($arr);12 do{13 echo key($arr);14 echo "--";15 echo current($arr);16 echo "
";17 }while(next($arr));18 reset($arr);

 

立即学习PHP免费学习笔记(深入)”;

三、超全局数组


超全局数组,超全局变量,预定义数组,预定义变量——说的都是它。

PHP给我们提供了一组包含强大功能的超全局数组,可以在任何地方,任何作用域不需声明,直接使用!不受任何作用域限制。

PHP超全局数组

       1、服务器变量: $_SERVER
  2、环境变量:$_ENV
  3、HTTP GET变量:$_GET
  4、HHTP POST变量:$_POST
  5、request变量:$_REQUEST
  6、HTTP文件上传变量:$_FILES
  7、HTTP Cookies:$_COOKIE
  8、Session变量:$_SESSION
  9、Global变量:$GLOBALS

 

立即学习PHP免费学习笔记(深入)”;

1、服务器变量: $_SERVER
var_dump($_SERVER);
echo ($_SERVER{'HTTP_USER_AGENT'});

2、环境变量:$_ENV
将系统环境变量,转变为PHP中的数组,就是$_ENV;

PHP默认是关闭此全局数组的。如果需要使用,
需修改php.ini文件中的variables_order = "GPSC",
改为variables_order = "EGPSC";

但是,修改后会有系统性能损失,港方并不推荐使用。
可以使用getenv()函数取代全局变量,取出每个系统环境变量的值。

phpinof();函数,包含了有关PHP的各种信息,其实environment板块就是系统环境的变量,可以使用getevn()函数取出其中的值;

3、HTTP GET变量:$_GET
获取前台通过get方式提交的数据

1 if(isset($_GET["sybmit"]&&isset($_GET["pwd"]))){2 if($_GET["username"]=="111"&&$_GET["pwd"]=="111"){3 echo "Get登录成功!";4 }else{5 echo "Get登录失败!";6 }7 }

 

立即学习PHP免费学习笔记(深入)”;

4、HHTP POST变量:$_POST
获取前台通过post方式提交的数据

1 if(isset($_POST["sybmit"])){2 if($_POST["username"]=="111"&&$_POST["pwd"]=="111"){3 echo "POST登录成功!";4 }else{5 echo "POST登录失败!";6 }7 }

 

立即学习PHP免费学习笔记(深入)”;

5、request变量:$_REQUEST
包含了$_GET,$_POST和$_COOKIE的数组
由于request同时包含get和post,可能导致get与post的键冲突,并且频率也不高。所以,并不使用request。
var_dump($_REQUEST);

6、HTTP文件上传变量:$_FILES
通过HTTP POST方式上传到当前脚本的项目的数组。
var_dump($_FILES);

7、HTTP Cookies:$_COOKIE
取到页面中的Cookie信息
1 setcookie("cookie","haha");

2 $_COOKIE["hehe"] = "hehe";

3 var_dump($_COOKIE); 


8、Session变量:$_SESSION
取到保存在Session中的信息。
session_start();
$_SESSION["haha"] = "haha";
var_dump($_SESSION);*/

9、Global变量:$GLOBALS
$GLOBALS包含了上述8个全局数组,可以通过$GLOBALS["_SERVER"]取到$_SERVER
还可以通过给$GLOBALS数组追加下标。创建全局变量,可以在函数里函数外随意访问:$GLOBALS["name"] = "zhangsan";
var_dump($GLOBALS["_SERVER"]);

 

立即学习PHP免费学习笔记(深入)”;

四、数组功能

 

1、返回数组所有的值,返回数组
var_dump(array_values($arr));

2、返回数组所有的键,返回数组
var_dump(array_keys($arr));

3、检测数组中是否包含某个值。返回真、假
参数:需要查询的值,数组,true(===)/false(===) 默认
var_dump(in_array("8",$arr,true));

4、交换数组中的键和值,返回新数组
var_dump(array_flip("8",$arr));

5、反转数组,返回新数组
参数:需要反转的数组
true:保留原有索引数组的下标与值的匹配。
false:只反转值,键不反转,默认
无论true/false,都不会影响关联数组,关联数组键,值永远是一对。
var_dump(array_reverse($arr,true));

6、统计数组元素个数
count($arr);

7、统计数组中,所有值出现的次数,返回一个新数组
新数组格式:键-->原数组的值(去重后的值)
        值-->原数组对应的值出现的次数。
var_dump(array_count_values($arr));

8、移出数组中重复的值!
var_dump(array_unique($arr));

9、过滤数组中的每一个值:
①不传回调函数:过滤掉所有空值(0/""/null/false/"0"/[])
②传回调函数:需要给回调函数传递一个参数,判断参数是否符合要求,如果符合,return true;否则,return false。

1 var_dump(array_filter($arr,function($num){2 if($num>4){3 return true;4 }else{5 return false;6 }7 }));


通过回调函数,对数组的每一个值,进行处理操作。(直接修改原数组,并返回bool类型的是否成功)
执行时,会给回调函数传递两个参数,分别是数组的value,key,然后可以在毁掉函数中,对值和键进行处理。
但是,牵扯到修改值的时候,必须要传递地址&!!!!
$fruits = array("d" => "lemon","a" => "orange","b" => "banana","c" => "apple");

1 var_dump(array_walk($fruits,function(&$item,$key){2 echo "{$key}-->{$item}
";3 $item .= $key;4 }));5 var_dump($fruits);

 

立即学习PHP免费学习笔记(深入)”;

将数组的每个值交由回调函数进行映射处理
array_map():第一个参数,是一个回调函数。第二个参数起,是>=1个数组。
有几个数组,可以给回调函数传几个参数,,表示每个数组的一个value;
可以对value进行处理,处理完以后通过return返回,那么新数组的对应的值就是你return回去的值。

【array_map与array_walk的异同】
相同点都能遍历数组,通过回调函数,重新处理数组的每一个值;
不同点
①walk只能传一个数组,回调函数接收这个数组的值和键;
map可以传多个数组,回调函数接收每个数组的值;
②walk直接修改原数组,而map不修改原数组,将新数组返回;
③walk给回调函数传递一个其余参数,map只能传数组的值;
④处理方式上,walk如果需要改掉原数组的值,需在回调函数中传递地址,直接修改变量的值;
而map,是通过将新的值,用return返回,即可修改新数组的值。
$a = [1,2,3,4,5];
$b = [1,2,3,4,5];

1 var_dump(array_walk($fruits,function(&$item,$key){2 echo "{$key}-->{$item}
";3 $item .= $key;4 }));5 var_dump($fruits);

 

五、数组函数

sort -- 对数组排序(升序)

var_dump(sort($arr));


rsort--对数组逆向排序(降序)


usort--使用用户自定义的比较函数对数组中的值进行排序


asort--对数组进行排序并保持索引关系(关联数组排序)


arsort--对数组进行逆向排序并保持索引关系


uasort--用户自定义的比较函数对数组进行排序并保持索引关联


ksort--对数组按照键名排序


krsort--对数组按照键名逆向排序


uksort--使用用户自定义的比较函数对数组中的键名进行排序


natsort--用“自然排序”算法对数组排序


natcasesort--用“自然排序”算法对数组不区分大小写字母排序


array_multisort -- 对多个数组或多维数组进行排序
第一个参数:第一个数组,必选
第二个参数:SORT_DESC;SORT_ASC(升序降序);
第三个参数:SORT_STRING/SORT_NUMERIC(按照字符串还是数字排序)
再之后是多个数组
排序规则:先排第一个数组,后面的数组会根据和第一个数组的对应关系,一列一列的排序;

如果多个数组多个数组排序,排序的数组长度要相等,否则报警告;

array_slice($array, $offset)
第一个参数:数组,必须;
第二个参数:从第几位开始截,负数表示从右往左数(按照数组的顺序ps:包括关联数组,而非下标)
第三个参数:截取的长度,可选,默认截取到最后
第四个参数:bool类型的参数,默认为false,索引重新排序,true保持索引关联
$arr1 = array_slice($arr, 2,5,TRUE);


array_splice($offset)
返回值:数组(被删掉的部分)
参数:
1、数组的地址,会修改原数组
2、从第几位开始删
3、删除的长度,不填默认到结尾
4、不填,默认为删除,填,用填的部分替换删掉的部分;
$arr1 = array_splice($arr, 2,5,[1,2,3,4]);


array_combine($keys, $values);创建一个数组,用一个数组的值作为键名,另一个数组的值作为值;
array_combine($keys'作为键的数组', $values'作为值的数组');
两个数组的长度必须一致,否则报警告


array_merge($array1);合并一个或多个数组
合并多个数组,将后面的数组拼接在前面数组的后面
如果多个数组中存在多个同名的关联键,则后面的会覆盖前面的


array_intersect($array1, $array2);两个数组取交集
多个数组取交集,结果会保留第一个数组的键值关联匹配


array_diff($array1, $array2);多个数组取差集;
取出多个数组中,在第一个数组中包含,但是在其他数组中不包含的值,保留第一个数组的键值关联;


array_pop();

删除数组最后一个值;返回删除的值;


array_push($var);
数组的最后插入一个或多个值;返回处理之后元素的个数


array_shift();
删除数组第一个值;返回删除的值;


array_unshift($var);
数组的开头插入一个或多个值;返回处理之后元素的个数


array_rand($input);随机抽取数组中的一个到多个键名!第二个参数为空,表示抽一个,传入数字n表示抽n个


shuffle();将函数打乱重新排序

好啦~~~今天的内容先分享到这里,小女子小菜鸟一只,还请各位园友多多指教·喜欢就点个赞吧~感谢支持!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

44

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

58

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

11

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

65

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

21

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号