PHP 数组使用小结
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:key和value,键和值。
一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。
二、声明数据
在PHP中声明数组的方式主要有两种:
一是应用array()函数声明数组
一是直接为数组元素赋值
方式1:array()函数声明的数组
格式:
array([mixed...]) 参数mixed的语法为key=>value
示例:
<?php $array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典"); print_r($array); echo "<br>"; echo $array[1]; // 注意:下标默认是从0开始 echo $array[2]; echo $array[3]; echo $array[4]; ?>
方式2:直接为数组元素赋值
如果在创建数组时不知所创建数组的大小,或在实际编写程序时数组的大小可能发生变化,采用这种数组创建的方法较好。
示例:
<?php $array[1]="I"; $array[2]="love"; $array[3]="PHP"; print_r($array); // 输出所创建数组的结构 ?>
三、数组的类型
PHP支持两种数组:
索引数组(indexed array)和联合数组(associative array)
前者使用数字作为键,后者使用字符串作为键。
四、输出数组
在PHP中对数组元素输出,可以通过echo和print语句来实现,但这只能对数组中某一元素进行输出;
要将数组结构输出则要使用print_r()函数,其语法:
print_r(mixed expression)
参数expression为普通的整形、字符型或实型变量则输出该变量本身,如果该参数为数组,则按一定键值和元素的顺序显示出该数组中的所有元素。
五、数组的构造
一维数组:
当一个数组的元素是变量时,则称其为一维数组。
一维数组格式: 类型说明符 数组名[常量表达式]
二维数组:
当一个数组的元素是一个一维数组时,则称之为二维数组。
示例:
<?php $str = array ( "网络编程语言"=>array ("PHP","JSP","ASP"), "体育项目"=>array ("m"=>"足球","n"=>"篮球")); print_r ( $str) ; ?>
六、遍历数组
遍历数组中的所有元素是常用的一种操作,在遍历的过程中可以完成查询或其他功能。在PHP中遍历数组的方法有多种,下面介绍最常用的两种方法。
1) 使用foreach结构遍历数组;
2) 使用list()函数遍历数组,list()函数仅能用于数字索引的数组,且数字索引从0开始。
示例:综合使用list()和each()认证用户登录
<?php // 输出用户登录信息 while(list($name,$value)=each($_POST)){ if($name!="submit") { echo "$name=$value<br>"; } } ?>
七、统计数组元素个数
在PHP中,使用count()函数对数组中的元素个数进行统计,语法为:
int coun( mixed array[,int mode] )
其中参数array为必要参数,mode为可选参数,若选中COUNT——RECURSIVE(或1),本函数将递归地对数组数组。
示例:
<?php $mimvp_array = array("blog"=>array( "blog.mimvp.com", "blog.ithomer.net", "blog.mimvp.net"), "forum"=>array("forum.mimvp.com"), "proxy"=>array("proxy.mimvp.com")); echo print_r($mimvp_array, True); echo "<br/>"; $mimvp_array_count = count( $mimvp_array ); echo "mimvp_array_count: " . $mimvp_array_count . "<br/>"; $mimvp_array_count2 = count( $mimvp_array, COUNT_RECURSIVE ); echo "mimvp_array_count2: " . $mimvp_array_count2 . "<br/>"; ?>
运行结果:
Array ( [blog] => Array ( [0] => blog.mimvp.com [1] => blog.ithomer.net [2] => blog.mimvp.net ) [forum] => Array ( [0] => forum.mimvp.com ) [proxy] => Array ( [0] => proxy.mimvp.com ) )
mimvp_array_count: 3
mimvp_array_count2: 8
八、数组排序
1) 使用sort()和rsort()分别对数组进行升序和降序
示例:
<?php $sort_array = array(15, 6, 37, 18, 99, 42, 48, 9); echo "=== sort === <br/>"; $sort_array_2 = sort($sort_array);// return 1 echo "sort_array_2 : " . $sort_array_2 . "<br/>"; for($i=0; $i<count($sort_array); $i++) { echo $sort_array[$i] . " "; } echo "<br/><br/>"; echo "=== rsort === <br/>"; $sort_array_3 = rsort($sort_array);// return 1 echo "sort_array_3 : " . $sort_array_3 . "<br/>"; for($i=0; $i<count($sort_array); $i++) { echo $sort_array[$i] . " "; } ?>
运行结果:
=== sort ===
sort_array_2 : 1
6 9 15 18 37 42 48 99
=== rsort ===
sort_array_3 : 1
99 48 42 37 18 15 9 6
2) 使用ksort()和asort()对关联数组排序
如果使用了相关数组,在排序后还要保持关键字和值的排序一致,这是就需要使用ksort()和asort()函
数。
ksort() 键升序排序,krsort() 键降序排序
asort() 值升序排序,arsort() 值降序排序
示例:
<?php $sort_array = array('blog'=>2013, 'apptop'=>2016, 'proxy'=>2015, 'forum'=>2013); echo "=== ksort === <br/>"; $sort_array_2 = ksort($sort_array); // krsort asc echo "sort_array_2 : " . $sort_array_2 . "<br/>"; print_r($sort_array); echo "<br/>"; $sort_array_2 = krsort($sort_array);// krsort desc echo "sort_array_2 : " . $sort_array_2 . "<br/>"; print_r($sort_array); echo "<br/><br/>"; echo "=== asort === <br/>"; $sort_array_3 = asort($sort_array); // asort asc echo "sort_array_3 : " . $sort_array_3 . "<br/>"; print_r($sort_array); echo "<br/>"; $sort_array_3 = arsort($sort_array);// asort desc echo "sort_array_3 : " . $sort_array_3 . "<br/>"; print_r($sort_array); ?>
运行结果:
=== ksort ===
sort_array_2 : 1
Array ( [apptop] => 2016 [blog] => 2013 [forum] => 2013 [proxy] => 2015 )
sort_array_2 : 1
Array ( [proxy] => 2015 [forum] => 2013 [blog] => 2013 [apptop] => 2016 )
=== asort ===
sort_array_3 : 1
Array ( [blog] => 2013 [forum] => 2013 [proxy] => 2015 [apptop] => 2016 )
sort_array_3 : 1
Array ( [apptop] => 2016 [proxy] => 2015 [forum] => 2013 [blog] => 2013 )
3) 自定义排序uksort()和uasort()对关联数组排序
uksort() 自定义健排序,升序和降序由自定义的 arr_cmp 决定
uasort() 自定义值排序,升序和降序由自定义的 arr_cmp 决定
代码示例:
function arr_cmp($a, $b){ if($a == $b) return 0; return ($a > $b) ? 1 : -1; } function test_array_4(){ $sort_array = array('blog'=>2013, 'apptop'=>2016, 'proxy'=>2015, 'forum'=>2013); echo "=== uksort === <br/>"; $sort_array_2 = uksort($sort_array, "arr_cmp"); echo "sort_array_2 : " . $sort_array_2 . "<br/>"; foreach ($sort_array as $key => $value) echo "$key => $value" . " "; echo "<br/><br/>"; echo "=== uasort === <br/>"; $sort_array_2 = uasort($sort_array, "arr_cmp"); echo "sort_array_2 : " . $sort_array_2 . "<br/>"; foreach ($sort_array as $key => $value) echo "$key => $value" . " "; }
运行结果:
=== uksort ===
sort_array_2 : 1
apptop => 2016 blog => 2013 forum => 2013 proxy => 2015
=== uasort ===
sort_array_2 : 1
forum => 2013 blog => 2013 proxy => 2015 apptop => 2016
参考推荐:
PHP 输出字符串(echo,print,printf,sprinf,print_r,var_dump)
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2018-12-21 18:39:40
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: PHP 数组使用小结 (米扑博客)