PHP 数组函数总结

最近在学习PHP,工作中需要经常对字符串和数组进行操作,因此需要对数组和字符串函数进行学习,在此记录学习过程。

数组操作分为几个类型:

  • 数组中元素指针的移动

    next() :next() 函数把指向当前元素的指针移动到下一个元素的位置,并返回当前元素的值。如果内部指针已经超过数组的最后一个元素,函数返回 false。

<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "<br />";
echo next($people); 
?>
输出:

Peter
Joe

prev():prev()函数把指向当前元素的指针移动到上一个元素的位置,并返回当前元素的值。如果内部指针已经超过数组的第一个元素之前,函数返回 false。prev() 和 next() 的行为类似,不过它将内部指针倒回一位而不是前移一位。

<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "<br />";
echo next($people) . "<br />"; 
echo prev($people); 
?>
输出:

Peter
Joe
Peter

end():end() 函数将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)。

<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "<br />";
echo end($people); 
?>
输出:

Peter
Cleveland

reset():reset() 函数把数组的内部指针指向第一个元素,并返回这个元素的值。若失败,则返回 FALSE。

<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "<br />";
echo next($people) . "<br />";
echo reset($people);
?>
输出:

Peter
Joe
Peter

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

<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "<br />";
?>
输出:

Peter
  • 数组元素增删改查

array_push():array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。

<?php
$a=array("Dog","Cat");
array_push($a,"Horse","Bird");
print_r($a);
?>
输出:

Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )

注释:即使数组中有字符串键名,您添加的元素也始终是数字键。

注释:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] =,因为这样没有调用函数的额外负担。

注释:如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。

array_shift():array_shift() 函数删除数组中的第一个元素,并返回被删除元素的值。

<?php
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_shift($a);
print_r ($a);
?>
输出:

Dog
Array ( [b] => Cat [c] => Horse )

array_pop():array_pop() 函数删除数组中的最后一个元素。

<?php
$a=array("Dog","Cat","Horse");
array_pop($a);
print_r($a);
?>
输出:

Array ( [0] => Dog [1] => Cat )

array_unshift():array_unshift() 函数在数组开头插入一个或多个元素。被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。该函数会返回数组中元素的个数。

<?php
$a=array("a"=>"Cat","b"=>"Dog");
array_unshift($a,"Horse");
print_r($a);
?>
输出:

Array ( [0] => Horse [a] => Cat [b] => Dog )

array_key_exists():array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。

<?php
$a=array("a"=>"Dog","b"=>"Cat");
if (array_key_exists("a",$a))
    {
    echo "Key exists!";
    }
else
    {
    echo "Key does not exist!";
    }
?>
输出:

Key exists!

in_array():in_array() 函数在数组中搜索给定的值。

<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

if (in_array("Glenn",$people))
  {
  echo "Match found";
  }
else
  {
  echo "Match not found";
  }
?>
输出:

Match found

array_search():array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。

<?php
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_search("Dog",$a);
?>
输出:

a
  • 数组元素排序

ksort():ksort() 函数按照键名对数组排序,为数组值保留原来的键。可选的第二个参数包含附加的排序标志。若成功,则返回 TRUE,否则返回 FALSE。

<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
ksort($my_array);
print_r($my_array);
?>
输出:

Array
(
[a] => Dog
[b] => Cat
[c] => Horse
)

krsort():krsort() 函数将数组按照键逆向排序,为数组值保留原来的键。可选的第二个参数包含附加的排序标志。若成功,则返回 TRUE,否则返回 FALSE。

<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
krsort($my_array);
print_r($my_array);
?>
输出:

Array
(
[c] => Horse
[b] => Cat
[a] => Dog
)

asort():asort() 函数对数组进行排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。可选的第二个参数包含了附加的排序标识。如果成功则返回 TRUE,否则返回 FALSE。

php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");

asort($my_array);
print_r($my_array);
?> 
输出:

Array
(
[b] => Cat
[a] => Dog
[c] => Horse
)

arsort():arsort() 函数对数组进行逆向排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。可选的第二个参数包含了附加的排序标识。如果成功则返回 TRUE,否则返回 FALSE。

<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");

arsort($my_array);
print_r($my_array);
?>
输出:

Array
(
[c] => Horse
[a] => Dog
[b] => Cat
)
  • 数组中元素的运算

array_sum():array_sum() 函数返回数组中所有值的总和。如果所有值多是整数,则返回一个整数值。如果其中有一个或多个值是浮点数,则返回浮点数。

<?php
$a=array(0=>"5",1=>"15",2=>"25");
echo array_sum($a);
?>
输出:

45

array_product():array_product() 函数计算并返回数组中所有值的乘积。

<?php
$a=array(5,5);
echo(array_product($a));
?>
输出:

25

array_walk():array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。典型情况下 function 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。

<?php
function myfunction($value,$key) 
{
echo "The key $key has the value $value<br />";
}
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
array_walk($a,"myfunction");
?>
输出:

The key a has the value Cat
The key b has the value Dog
The key c has the value Horse


<?php
function myfunction($value,$key,$p) 
{
echo "$key $p $value<br />";
}
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
array_walk($a,"myfunction","has the value");
?>
输出:

a has the value Cat
b has the value Dog
c has the value Horse

array_count_values():array_count_values() 函数用于统计数组中所有值出现的次数。本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

<?php
$a=array("Cat","Dog","Horse","Dog");
print_r(array_count_values($a));
?>
输出:

Array ( [Cat] => 1 [Dog] => 2 [Horse] => 1 )
  • 数组合并,元素随机化

    array_merge():array_merge() 函数把两个或多个数组合并为一个数组。如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。

<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));
?>
输出:

Array ( [a] => Horse [b] => Cat [c] => Cow )

array_merge_recursive():array_merge_recursive() 函数与 array_merge() 函数 一样,将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组。但是,与 array_merge() 不同的是,当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。

<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge_recursive($a1,$a2));
?>
输出:

Array (
[a] => Horse
[b] => Array ( [0] => Dog [1] => Cat )
[c] => Cow
)

array_combine():array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。

<?php
$a1=array("a","b","c","d");
$a2=array("Cat","Dog","Horse","Cow");
print_r(array_combine($a1,$a2));
?>
输出:

Array ( [a] => Cat [b] => Dog [c] => Horse [d] => Cow )

shuffle():shuffle() 函数把数组中的元素按随机顺序重新排列。若成功,则返回 TRUE,否则返回 FALSE。

<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
shuffle($my_array);
print_r($my_array);
?>
输出:

Array ( [0] => Cat [1] => Horse [2] => Dog )
  • 数组其他函数
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章