首页 > 编程语言 >PHP数组使用、特性、函数的总结

PHP数组使用、特性、函数的总结

时间:2023-02-07 14:01:32浏览次数:43  
标签:PHP 函数 元素 数组 each array 排序


  • 包含其他数组的数组成为多维数组
  • 关联数组(即非数字索引数组)使用更有意义的数据作为数组的索引

1、数组索引数组

$products  =  array( ‘a’,  ‘b’,  ‘c’);//就像一个对象一样初始化

  • 数组的复制:$arra = $arrb;//即可将数组arrb的内容复制到数组arra中

使用range可以将一个范围的值,直接放到一个数组中返回,比如:

$numbers = range(1,10);

$letters = range(‘a’, ‘z’);

range具有第三个参数,是间隔的意思,比如要用1到10之间的奇数数组:

$odds = range(1,10,2);

数组具有的一些功能:

  • 如果信息存放在磁盘文件中,可以直接将文件载入到数组中
  • 如果数组中的数据存放在数据库中,可以直接从数据库载入该数组
  • 可以使用函数每次提取数组的一部分内容,或者对数组进行重新排序
  • PHP的数组不需要预先初始化或创建,第一次使用,会自动创建

如果数组arra有2个元素,那么语句arra[2] = ‘a’;将会自动添加一个新元素

对数组的foreach访问

foreach ( $ arra as $ c ) {
echo $ c . " " ;
}

 

2、使用不同索引的关联数组

关联数组,可以将每个变量值和任何关键字或者索引联系起来

关联数组的初始化:

$price  =  array(‘Tires’=>100,  ‘oil’=>10,  ‘Spark’=>4);

3、使用foreach对关联数组进行遍历

foreach每次将数组内容,放到一个键值对里面进行访问:


foreach ( $ price as $ key = > $ value ) {
echo $ key . " - " . $ value . "<br />" ;
}

 

结果:

测试关联数组————–
Tires – 100
oil – 10
Spark – 4

4、使用while + each()结构访问关联数组

每次将一个键值对作为整体返回,类似pair(key,  value):


while ( $ elem = each ( $ price ) ) {
echo $ elem [ 'key' ] . " - " . $ elem [ 'value' ] . "<br />" ;
}

 

结果是一样的。

5、访问关联数组值list()和each()搭配进行(高级用法)

reset ( $ price ) ; //



貌似遍历了因此数组,数组指针就变成了最后一个,所以要重置一下


echo "<br>使用list()+each()遍历数组:<br>" ;
while ( list ( $ product , $ pri ) = each ( $ price ) ) {
echo $ product . " - " . $ pri . "<br />" ;
}


注意:each()函数,数组将记录当前元素,如果希望两次以上使用该数组,就必须用reset()函数将当前元素重新设置到数组开始的地方



6、数组操作符

主要是+,即联合操作符,解释如下:

+,例如$arra+$arrb,两个数组的联合,数组arrb会被附加到arra中,但是任何关键字冲突的元素不会被添加

7、数字索引数组升序排序

bool sort ( array &$array [, int ​$sort_flags​ = SORT_REGULAR ] )

第二个参数:

  • SORT_REGULAR​– 默认
  • SORT_NUMERIC​– 作为数字比较
  • SORT_STRING

8、关联数组升序排序

分为两种:

  • 按照关键字排序,即按照$key的内容排序

bool ksort ( array &$array [, int ​$sort_flags​ = SORT_REGULAR ] )

  • 按照值排序,即按照$value排序

bool asort ( array &$array [, int ​$sort_flags​ = SORT_REGULAR ] )

其中第二个参数和sor是相同的

9、对数组的降序排序

  • sort、ksort、asort都是对数组进行升序排序的
  • rsort、krsort、arsort是对数组进行降序排序,但是用法相同

10、使用回调函数对多维数组进行排序

如下一个排序:


echo "<br>使用回调函数对多维数组排序:<br>" ;
$ products = array (
array ( 'TIR' , 'Tires' , 100 ) ,
array ( 'OIL' , 'Oil' , 10 ) ,
array ( 'SPK' , 'Spark Plugs' , 4 )
) ;

//以下是回调函数,两个参数是数组的一维元素
function compare ( $ x , $ y ) {
if ( $ x [ 1 ] == $ y [ 1 ] ) {
return 0 ;
} else if ( $ x [ 1 ] < $ y [ 1 ] ) {
return - 1 ;
} else
return 1 ;
}

usort ( $ products , 'compare' ) ; //传入函数的名字

 

usor中的u代表用户,因为要求用户传入比较函数,同样的,有uasort和uksort函数

多维数组的排序,如果要进行反向排序,只要将回调函数的返回值取反就行了,比如

usrot($products,  ‘reverse_compare’);

11、对数组进行重新排序

bool shuffle ( array &$array )   //该函数将一个数组随机打乱

array_reverse 返回原数组的反序副本,不会改变原数组。

array array_reverse ( array $array [, bool ​$preserve_keys​ = false ] )

12、array_push和array_pop

int array_push ( array &$array , mixed $var [, mixed $... ] )

向数组末尾添加元素,例如代码:

array_push($stack, “apple”, “raspberry”);

另一个是array_pop

mixedarray_pop ( array ​​&$array​​ ) //array_pop() 弹出并返回末尾元素


 

<?php
$stack = array ( "orange" , "banana" , "apple" , "raspberry" ) ;
$fruit = array_pop ( $stack ) ;
print_r ( $stack ) ;
?>

结果(和栈一样,末尾元素被删除):

Array ( [0] => orange [1] => banana [2] => apple )

13、explode将字符串拆分成数组

array explode ( string $delimiter , string ​$string​ [, int ​$limit​ ] )

第三个参数若被设置,则只返回前最多limit个元素

<?php
$stack = array ( "orange" , "banana" , "apple" , "raspberry" ) ;
$fruit = array_pop ( $stack ) ;
print_r ( $stack ) ;
?>

结果:

Array ( [0] => one [1] => two|three|four )

Array ( [0] => one [1] => two [2] => three )

14、PHP的其他数组函数

在数组中浏览的函数:

数组中都有一个内部指针,用来遍历数组,该指针可以被使用和改变,比如each()就是使用该指针的

  • each():返回当前元素,然后前移指针
  • current()
  • reset():将指针指向数组开头
  • end():将指针指向数组末尾
  • next():前移指针,然后返回元素,和each()相反
  • pos()
  • prev():前移指针,然后返回元素,与next()相反

15、超级强大:对数组一个元素使用任何回调函数:array_walk()

bool array_walk ( array &$array , callable ​$funcname​ [, mixed $userdata = ​NULL​ ] )

注意,该函数是不管数组指针指向哪里,它就是从头到位开始遍历

  • 如果第三个参数被设置,我们可以在自己的回调函数中,使用该参数

回调函数的形式如下:

myfunc(  value,  key,  userdata);//

一般来说,funcname有2个参数,第一个是value,第二个是key,可以忽略key和userdata,只带1个参数即value

<?php
$str = 'one|two|three|four' ;

// positive limit
print_r ( explode ( '|' , $str , 2 ) ) ;

// negative limit (since PHP 5.1)
print_r ( explode ( '|' , $str , - 1 ) ) ;
?>

 

结果:

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)

使用了array_walk以后的数组:

Array
(
[ 0 ] = > 3
[ 1 ] = > 6
[ 2 ] = > 9
[ 3 ] = > 12
[ 4 ] = > 15
[ 5 ] = > 18
)

 

16、统计数组元素个数:count()、sizeof()和array_count_values()

sizeof()和count()的返回值相同

array_count_values用法不同,返回的是统计数目:


<?php
$array = array ( 1 , "hello" , 1 , "world" , "hello" ) ;
print_r ( array_count_values ( $array ) ) ;
?>


结果:


Array
(
[ 1 ] = > 2
[ hello ] = > 2
[ world ] = > 1
)

 

17、将键值对的关联数组的每个元素建立一个变量extract()

int extract ( array ​​&$var_array​​​ [, int ​​$extract_type​​​ = EXTR_OVERWRITE [, string ​​$prefix​​​ = ​NULL

比如代码:

<?php

/* Suppose that $var_array is an array returned from wddx_deserialize */

$size = "large" ;
$var_array = array ( "color" = > "blue" ,
"size" = > "medium" ,
"shape" = > "sphere" ) ;
extract ( $var_array , EXTR_PREFIX_SAME , "wddx" ) ;

echo "$color, $size, $shape, $wddx_size\n" ;

?>


结果:

  
blue , large , sphere , medium


可以看出,意思是将键作为变量名,新建了变量,为了防止冲突,设定第二个和第三个参数,用于处理冲突,第三个参数指定新建变量的前缀。

18、小结

数组在PHP用的是超级多

本章主要对数组进行了概念定义、foreach,each,list的遍历方法、array_walk回调的使用、打乱、排序、抽取等各种数组操作。

标签:PHP,函数,元素,数组,each,array,排序
From: https://blog.51cto.com/peishuai/6042060

相关文章

  • 新浪微博的mid转换成base62格式的PHP函数
    最近有用到将新浪微博的mid地址转换成短格式编码的方法,例如:221110410216147026转换后:zF4mOFpN7A比如新浪微博地址可以组装成这样:​​http://weibo.com/1642634100/5en0UftjV......
  • 数组扩容与数组拷贝
    前言在上一篇文章中,千锋壹哥给大家讲解了数组的创建、初始化及遍历方式,这些是我们学习数组的基础。其实数组的内容非常多,今天这篇文章,千锋壹哥主要带大家学习数组的扩容、......
  • PHP的验证码实现(w3schools推荐)
    本文使用PHP一些可用的特性实现了验证码功能。该教程非常的简单,使用可以改变的字体生成了验证码图片,正如我们所了解的,验证码是用于避免垃圾评论或者自动提交的。本验证码程......
  • Python生成文件md5校验值函数
    linux有个命令叫做md5sum,能生成文件的md5值,一般情况下都会将结果记录到一个文件中用于校验使用,比如会这样使用:[crazyant@localhostPythonMd5]$moresample_filewww......
  • Javascript trim()函数实现
    在JavaScript中我们需要用到trim的地方很多,但是JavaScript又没有独立的trim函数或者方法可以使用,所以我们需要自己写个trim函数来实现我们的目的。    方案一:以原型方......
  • PHP中文乱码解决
    网上转载的,但是代码不完全,补充了下,再发通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作文件来下载,相信这个大家都会。那么用Content-Disp......
  • PHP安全笔记
    1、          MagicQuotes选项PHP.INI中中有三个以magic_quotes_开头的选项magic_quotes_gpc如果是On的话,就会自动用‘\’转义从GET,POST,COOKIE来的数据,这是为......
  • 17个非常有用的PHP类和库
    本文转自互联网。在我们日常程序开发当中,使用一个好的而且成熟的PHP类,可以减少很多手工编码,通过这些通用API的使用,可以大大减轻我们的开发工作。今天,我们将重点介绍了一些很......
  • 数组的find方法 ES6 230207
    数组的find方法接收一个方法体方法体收一个参数这个参数作为数组的成员返回一个布尔值如果布尔值的结果为真那么查找成功并中止继续下一个成员的查找......
  • PHP字符串函数、知识要点总结
    主要包括以下方面:字符串的格式化字符串的连接与分割字符串的比较使用字符串函数匹配和替换子字符串使用正则表达式(下一篇文章专门总结)1、字符串的格式化:chop(rtrim)、ltrim......