Home >Backend Development >PHP Tutorial >PHP数组操作函数小结

PHP数组操作函数小结

WBOY
WBOYOriginal
2016-06-20 13:04:44821browse

这么多的数组函数我们该怎么学习?其实我们只需要清楚,我们需要对数组做哪些操作,然后把这些操作归类,心中就有了大概的印象,然后随着你的实践,这些函数你就很清楚了,在这里提醒大家的是手册要常备!废话不多说,数组函数一般归为以下几类:

1、数组输出类

print_r()

2、数组创建类

array()

list() //这个函数和上面提到的 array()一样,只是个语言结构,它通过一步操作给一组变量赋值!

range ( mixed low, mixed high[, number step] ) //建立一个包含指定范围单元的数组

3、数组判断类

is_array(); //测试变量是否array类型,是则返回true,不是则返回false,很基本,很实用的函数!

in_array();
检查数组中是否存在某个值

bool array_key_exists ( mixed key,array search )
检查给定的键名或索引是否存在于数组中,存在则返回true。

3、数组元素操作类

int array_push ( array &target_array,mixed var [, mixed ...] ) //将一个或多个单元从末尾添加至数组!返回新数组的单元总数!

PHP代码:
$states =array( ‘Ohio' , ‘New York' );
array_push ( $states , ‘California' , ‘Texas' );
//output: array((‘Ohio',‘New York' , ‘California',‘Texas');

array_pop(); //弹出并返回数组的最后一个单元,并将数组长度减一。使用后会重置数组指针!

PHP代码:
$states =array( ‘Ohio' , ‘New York' );
$state = array_pop ( $states );
//output: New York

array_shift();
与array_pop类似,只不过它移出和返回的是数组的第一个值。数字键名将重新从零开始记数,文字键名则保持不变!

array_unshift();
与array_push类似,只不过是从数组头部插入数据!数字键名将重新从零开始记数,文字键名则保持不变!

array array_pad ( array input, intpad_size, mixed pad_value )
用值将数组填充到指定长度!pad_size为正,则从右侧开始填补,为负,从左侧开始填补,小与数组长度,则保持数组不变!

array array_keys ( array input [,mixed search_value [, bool strict]] )
返回数组中的所有键名。如果选定search_value,则返回选定的键名!自PHP 5]起,可以用strict参数来进行全等比较( ===)。

array array_values ( array input )
与array_keys()类似!返回的是数组的所有键值!

mixed array_search ( mixed needle,array haystack [, bool strict] )
在 haystack中搜索 needle参数并在找到的情况下返回键名,否则返回 FALSE 。
如果needle是字符串,则比较区分大小写!
如果strict是true,还得比较类型
如果needle在haystack中出现不止一次,则返回第一个匹配的键。要返回所有匹配值的键,应该用array_keys()加上可选参数search_value来代替!

mixed key ( array &array )
返回数组中当前单元的键名!

reset();
重置数组的指针。

each();
返回数组中当前单元的键 /值对,并将指针下移一位!

current();
返回当前被内部指针指向的数组单元的值,并不移动指针。如果超出了单元列表的末端,则返回false。

end();
将 array的内部指针移动到最后一个单元并返回其值。

next();
返回数组内部指针指向的下一个单元的值,或当没有更多单元时返回 FALSE 。

prev();
返回数组内部指针指向的前一个单元的值,或当没有更多单元时返回 FALSE 。

bool array_walk ( array &array,callback funcname [, mixed userdata] )

array array_reverse ( array array [,bool preserve_keys] )

接受数组 array作为输入并返回一个单元为相反顺序的新数组,如果 preserve_keys为 TRUE 则保留原来的键名。

PHP代码:
$states =array( ‘Delaware' , ‘Pennsylvania' , ‘New Jersey' );
print_r ( array_reverse ( $states ));
//Array ([0]=>New Jersey [1]=>Pennsylvania[2]=>Delaware)
$states = array( ‘Delaware' , ‘Pennsylvania' , ‘New Jersey' );
print_r ( array_reverse ( $states , 1 ));
//Array ([2]=>New Jersey [1]=>Pennsylvania[0]=>Delaware)

array array_flip ( array trans )
交换数组中的键 /值对,注意 trans 中的值需要能够作为合法的键名,例如需要是 integer 或者 string。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转。
如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。

PHP代码:
$trans =array( "a" => 1 , "b" => 1 , "c" => 2 );
$trans = array_flip ( $trans );
print_r ( $trans );
//Array([1]=>b[2]=>c );

4、数组个数类

count();
计算数组中的单元数目或对象中的属性个数

array_count_values();
返回一个数组,该数组用input数组中的值作为键名,该值在input数组中出现的次数作为值。

PHP代码:
$array= array( 1 , "hello" , 1 , "world" , "hello" );
print_r ( array_count_values ( $array ));

array array_unique ( array array )
接受 array作为输入并返回没有重复值的新数组。

PHP代码:
$input =array( "a" => "green" , "red" , "b" => "green" , "blue" , "red" );
$result = array_unique ( $input );
print_r ( $result );

5、数组排序类

sort();
本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
注意 : 本函数为array中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。

natsort();
利用自然排序法对数组进行排序!

PHP代码:
$array1 = $array2 = array( "img12.png" , "img10.png" , "img2.png" , "img1.png" );
sort ( $array1 );
echo "Standard sortingn" ;
print_r ( $array1 );
natsort ( $array2 );
echo "nNatural order sortingn" ;
print_r ( $array2 );

natcasesort();
与 natsort()一致,除了不区分大小写!

rsort();
与 sort()一致,这个是逆向排序。

asort();
与 sort()一直,但保持键名不变。
array_multisort();
对多个数组或多维数组进行排序,具体参考手册,有详细说明!
arsort();
与 rsort()类似,但保持键名不变。
ksort();
与 sort()类似,对键名进行排序。
krsort();
与 ksort()类似,但是逆向排序。
usort();
利用用户自定义函数对数组进行排序!

5、数组分割类

array array_combine ( array keys,array values )
创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

array array_merge ( array array1 [,array array2 [, array ...]] )
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
然而,如果数组包含数字键名,后面的值将不会 覆盖原来的值,而是附加到后面。

PHP代码:
$array1 =array( "color" => "red" , 2 , 4 );
$array2 = array( "a" , "b" , "color" => "green" , "shape" => "trapezoid" , 4 );
$result = array_merge ( $array1 , $array2 );
print_r ( $result );

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

PHP代码:
$array1 = array();
$array2 = array( 1 => "data" );
$result = array_merge ( $array1 , $array2 );

如果你想完全保留原有数组并只想新的数组附加到后面,用+运算符:

PHP代码:
$array1 = array();
$array2 = array( 1 => "data" );
$result = $array1 + $array2 ;

array array_merge_recursive ( arrayarray1 [, array ...] )
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。

PHP代码:
$ar1 = array( "color" =>array( "favorite" => "red" ), 5 );
$ar2 = array( 10 , "color" => array( "favorite" => "green" , "blue" ));
$result = array_merge_recursive ( $ar1 , $ar2 );
print_r ( $result );

array array_slice ( array array, intoffset [, int length [, bool preserve_keys]] )
从数组中取出一段。
如果offset非负,则序列将从array中的此偏移量开始。如果offset为负,则序列将从array中距离末端这么远的地方开始。
如果给出了length并且为正,则序列中将具有这么多的单元。如果给出了length并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从offset开始一直到array的末端。


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn