php常用的数组函数笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。有问题可加微信meizu_mx4 https://blog.csdn.net/sinat_15955423/article/details/84565865

1.array_keys() 函数返回包含数组中所有键名的一个新数组。

如果提供了第二个参数,则只返回键值为该值的键名。

如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。

<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(
array_keys($a)
);

返回结果:Array ( [0] => Volvo [1] => BMW [2] => Toyota )

 那如果我想获取一个数组中其中一个值的key怎么办呢?

<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(
array_keys($a,"Highlander")
);
?>

返回结果:Array ( [0] => Toyota )

2. reset 函数返回数组的第一个元素

例如;

$x = ['value1' => 1024, 'value2' => 1023, 'value3' => 1025, 'value4' => 1021, 'value5' => 1022];
print_r(reset($x));//1024

3.arsort 函数逆向排序数组并保持索引关系

$x = ['value1' => 1024, 'value2' => 1023, 'value3' => 1025, 'value4' => 1021, 'value5' => 1022];

arsort($x);
print_r($x);

结果:Array ( [value3] => 1025 [value1] => 1024 [value2] => 1023 [value5] => 1022 [value4] => 1021 )

4.end 函数获取数组最后一个元素

$x = ['value1' => 1024, 'value2' => 1023, 'value3' => 1025, 'value4' => 1021, 'value5' => 1022];

print_r(end($x));//1022

5.asort 函数按数组值升序排序,并保持索引关系

$x = ['value1' => 1024, 'value2' => 1023, 'value3' => 1025, 'value4' => 1021, 'value5' => 1022];

asort($x);
print_r($x); 

Array ( [value3] => 1025 [value1] => 1024 [value2] => 1023 [value5] => 1022 [value4] => 1021 )

6.ksort 函数按数组的key升序排序

<?php

$x = ['value1' => 1024, 'value3' => 1023, 'value2' => 1025, 'value4' => 1021, 'value5' => 1022];

ksort($x);
print_r($x);

Array ( [value1] => 1024 [value2] => 1025 [value3] => 1023 [value4] => 1021 [value5] => 1022 )

7.krsort 函数按数组key降序排序 

<?php

$x = ['value1' => 1024, 'value3' => 1023, 'value2' => 1025, 'value4' => 1021, 'value5' => 1022];

krsort($x);
print_r($x);

Array ( [value5] => 1022 [value4] => 1021 [value3] => 1023 [value2] => 1025 [value1] => 1024 )

8.sort() 函数对索引数组进行升序排序。

注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。

如果成功则返回 TRUE,否则返回 FALSE。

<?php

$x = ['value1' => 1024, 'value2' => 1023, 'value3' => 1025, 'value4' => 1021, 'value5' => 1022];

sort($x);
print_r($x);

结果:Array ( [0] => 1021 [1] => 1022 [2] => 1023 [3] => 1024 [4] => 1025 )

9.rsort() 函数对数值数组进行降序排序。同上赋予新的键名

<?php

$x = ['value1' => 1024, 'value2' => 1023, 'value3' => 1025, 'value4' => 1021, 'value5' => 1022];

rsort($x);
print_r($x);

结果:Array ( [0] => 1025 [1] => 1024 [2] => 1023 [3] => 1022 [4] => 1021 )

10.arsort() 对数组进行逆向排序并保持索引关系+

<?php

$x = ['value1' => 1024, 'value2' => 1023, 'value3' => 1025, 'value4' => 1021, 'value5' => 1022];

arsort($x);
print_r($x);

结果:Array ( [value3] => 1025 [value1] => 1024 [value2] => 1023 [value5] => 1022 [value4] => 1021 )

11.natsort() 函数用"自然排序"算法对数组进行排序。键值保留它们原始的键名。

<?php
$temp_files = array("temp15.txt","temp10.txt",
"temp1.txt","temp22.txt","temp2.txt");

sort($temp_files);
echo "标准排序:";
print_r($temp_files);
echo "<br>";

natsort($temp_files);
echo "自然排序:";
print_r($temp_files);
?>

标准排序:Array ( [0] => temp1.txt [1] => temp10.txt [2] => temp15.txt [3] => temp2.txt [4] => temp22.txt ) 
自然排序:Array ( [0] => temp1.txt [3] => temp2.txt [1] => temp10.txt [2] => temp15.txt [4] => temp22.txt )

12. natcasesort() 是 natsort() 函数的不区分大小写字母的版本。

<?php
$temp_files = array("temp15.txt","Temp10.txt",
"temp1.txt","Temp22.txt","temp2.txt");

natsort($temp_files);
echo "自然排序:";
print_r($temp_files);
echo "<br />";

natcasesort($temp_files);
echo "不区分大小写的自然排序:";
print_r($temp_files);
?>
自然排序:

Array
(
[0] => Temp10.txt
[1] => Temp22.txt
[2] => temp1.txt
[4] => temp2.txt
[3] => temp15.txt
)

不区分大小写的自然顺序:

Array
(
[2] => temp1.txt
[4] => temp2.txt
[0] => Temp10.txt
[3] => temp15.txt
[1] => Temp22.txt
)

 删除和增加数组元素:

1.array_push 在数组元素的尾部增加 

array_push(array,value1,value2…) 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。 
该函数等于多次调用 array[]=value。 

<?php

$arr = array("百度","阿里","腾讯");

array_push($arr,"知乎","微博");

echo "<pre class="brush:php;toolbar:false">"; //换行显示

print_r($arr);

//打印结果显示:

Array

(

  [0] => 百度

  [1] => 阿里

  [2] => 腾讯

  [3] => 知乎

  [4] => 微博

)

</pre>

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

<?php

$arr = array("百度","阿里","腾讯");

array_pop($arr);

echo "<pre class="brush:php;toolbar:false">"; //换行显示

print_r($arr);

打印结果显示:

Array

(

  [0] => 百度

  [1] => 阿里

)

</pre>

3.array_unshift (array,value1,value2,value3…) 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。 

<?php

$arr = array("百度","阿里","腾讯");

array_unshift($arr,"知乎","微博");

echo "<pre class="brush:php;toolbar:false">"; //换行显示

print_r($arr);

//打印结果显示:

Array

(

  [0] => 知乎

  [1] => 微博

  [2] => 百度

  [3] => 阿里

  [4] => 腾讯

)

</pre>

 4.array_shift(array)  函数删除数组中第一个元素 并可以返回被删除元素的值。 

<?php

$arr = array("百度","阿里","腾讯");

array_shift($arr);

echo "<pre class="brush:php;toolbar:false">"; //换行显示

print_r($arr);

打印结果显示:

Array

(

  [0] => 阿里

  [1] => 腾讯

)

</pre>

5.array_unique(array) 函数移除数组中的重复的值,并返回结果数组。

<?php

$arr = array("百度","阿里","腾讯","百度","微博");

$data = array_unique($arr);

echo "<pre class="brush:php;toolbar:false">";

print_r($data);

打印结果显示:

Array

(

  [0] => 百度

  [1] => 阿里

  [2] => 腾讯

  [4] => 微博

)

</pre>

6.in_array (search,array,type)检查数组中是否存在指定的值。

 如果给定的值 search 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。如果没有在数组中找到参数,函数返回 false。

<?php

$arr = array("百度","阿里","腾讯");

while (in_array("百度", $arr)) {

  echo "已经找到";

  break;

} //输出已经找到

7.array_slice (array,start,length,preserve) 在数组中根据条件取出一段值

   array_splice (array,start,length,array) 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。

start 必需。数值。规定取出元素的开始位置。 0 = 第一个元素。 
如果该值设置为正数,则从前往后开始取。 
如果该值设置为负数,则从后向前取 start 绝对值。 -2 意味着从数组的倒数第二个元素开始。

length 可选。数值。规定被返回数组的长度。 
如果该值设置为整数,则返回该数量的元素。 
如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。 
如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素

<?php

$arr = array("百度","阿里","腾讯","知乎","微博");

$data = array_slice($arr,0,4);

echo "<pre class="brush:php;toolbar:false">";

print_r($data);

打印结果显示:

Array

(

  [0] => 百度

  [1] => 阿里

  [2] => 腾讯

  [3] => 知乎

)

</pre>

将一维数组转换为每3个连续值组成的二维数组。分享给大家供大家参考,具体如下:

<?php

$aaa = array('aa','bb','cc','dd','ee','ff','gg','hh','ii');

for($i=0;$i<3;$i++)

{

  $bbb[] = array_slice($aaa, $i * 3 ,3);

}

print_r($bbb);

?>

结果:

Array

(

  [0] => Array

    (

      [0] => aa

      [1] => bb

      [2] => cc

    )

  [1] => Array

    (

      [0] => dd

      [1] => ee

      [2] => ff

    )

  [2] => Array

    (

      [0] => gg

      [1] => hh

      [2] => ii

    )

)

删除数组元素并用新元素替代:

<?php

$arr1 = array("百度","阿里","腾讯");

$arr2 = array("知乎","微博");

array_splice($arr1,0,2,$arr2);

echo "<pre class="brush:php;toolbar:false">";

print_r($arr1);

打印结果显示:

Array

(

  [0] => 知乎

  [1] => 微博

  [2] => 腾讯

)

</pre>

数组合并、拆分、比较:

1.array_merge() 函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加

<?php

$arr1 = array("百度","阿里","腾讯");

$arr2 = array("知乎","微博");

$data = array_merge($arr1,$arr2);

echo "<pre class="brush:php;toolbar:false">";

print_r($data);

打印结果显示:

Array

(

  [0] => 百度

  [1] => 阿里

  [2] => 腾讯

  [3] => 知乎

  [4] => 微博

)

</pre>

2.array_merge_recursive() 递归追加数组。

array_merge_recursive函数与array_merge()相同,可以将两个或多个数组合并到一起,形成一个联合的数组。两者之间的区别在于,当某个输入数组中的某个键已经存在于结果数组中时该函数会采取不同的处理方法。array_merge()会覆盖前面存在的键/值对,将其替换为当前输入数组中的键/值对,而array_merge_recursive()将两个值合并在一起,形成一个新的数组并以原有的键作为数组名。其形式为:

$arr= array('one'=>'C', 'one'=>'B');

$arr1= array('three'=>'1', 'one'=>'2');

$arr2= array_merge_recursive($arr, $arr1);

echo "<pre class="brush:php;toolbar:false">";

print_r($arr2);

打印结果显示:

Array

(

  [one] => Array

    (

      [0] => B

      [1] => 2

    )

  [three] => 1

)

3.array_combine() 合并两个数组 。

函数会生成一个新数组,这个数组由一组提交的键和对应的值组成,其形式为:

$arr= array('A', 'B');

$arr1= array('1', '2');

$arr2= array_combine($arr, $arr1);

echo "<pre class="brush:php;toolbar:false">";

print_r($arr2);

打印结果显示:

Array

(

  [A] => 1

  [B] => 2

)

4.array_intersect() 求数组的交集。

函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:

$arr= array('A', 'B', 'C', 'D');

$arr1= array('A', 'B', 'E');

$arr2= array('A', 'F', 'D');

$arr3= array_intersect($arr, $arr1, $arr2);

echo "<pre class="brush:php;toolbar:false">";

print_r($arr3);

打印结果显示:

Array

(

  [0] => A

)

注意:只有在两个元素有相同的数据类型时,array_intersect()才会认为它们相等。

5.array_intersect_assoc() 求关联数组的交集

array_intersect_assoc()与array_intersect()基本相同,只不过它在比较中还考虑了数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才被返回到结果数组中。其形式如下:

$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D');

$arr1= array('a'=>'A', 'c'=>'B', 'E');

$arr2= array('a'=>'A', 'b'=>'F', 'd'=>'B');

$arr3= array_intersect_assoc($arr, $arr1, $arr2);

echo "<pre class="brush:php;toolbar:false">";

print_r($arr3);

打印结果显示:

Array

(

  [a] => A

)

6.array_diff_assoc() 求关联数组的差集

函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键,因此,只在第一个数组中出现而不在其他输入数组中出现的键/值对才会被返回到结果数组中。其形式如下:

$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D');

$arr1= array('a'=>'A', 'b'=>'B', 'e'=>'E');

$arr3= array_diff_assoc($arr, $arr1);

echo "<pre class="brush:php;toolbar:false">";

print_r($arr3);

打印结果显示:

Array

(

  [c] => C

  [d] => D

)

7.array_rand() 函数将返回数组中的一个或多个键。其形式为:

$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D');

$arr1= array_rand($arr, 2);

echo "<pre class="brush:php;toolbar:false">";

print_r($arr1);

打印结果显示:

 Array

(

  [0] => c

  [1] => d

) //每次刷新显示的结果都不一样

8.array_sum() 函数将数组内的所有值加在一起,返回最终的和,其形式如下:

$arr= array('A', 32, 12, 'B');

$count= array_sum($arr);

echo "<pre class="brush:php;toolbar:false">";

print_r($count); //44

9.array_chunk() 函数将数组分解为一个多维数组,这个多维数组由多个包含size个元素的数组所组成。其形式如下:

$arr= array('A', 'B', 'C', 'D');

$arr1= array_chunk($arr, 2);

echo "<pre class="brush:php;toolbar:false">";

print_r($arr1);

结果为:

Array

(

  [0] => Array

    (

      [0] => A

      [1] => B

    )

  [1] => Array

    (

      [0] => C

      [1] => D

    )

)

其他数组函数

current() - 返回数组中的当前元素的值
end() - 将内部指针指向数组中的最后一个元素,并输出
next() - 将内部指针指向数组中的下一个元素,并输出
prev() - 将内部指针指向数组中的上一个元素,并输出
each() - 返回当前元素的键名和键值,并将内部指针向前移动

<?php
$people = array("Bill", "Steve", "Mark", "David");

echo current($people) . "<br>"; // 当前元素是 Bill
echo next($people) . "<br>"; // Bill 的下一个元素是 Steve
echo current($people) . "<br>"; // 现在当前元素是 Steve
echo prev($people) . "<br>"; // Steve 的上一个元素是 Bill
echo end($people) . "<br>"; // 最后一个元素是 David
echo prev($people) . "<br>"; // David 之前的元素是 Mark
echo current($people) . "<br>"; // 目前的当前元素是 Mark
echo reset($people) . "<br>"; // 把内部指针移动到数组的首个元素,即 Bill
echo next($people) . "<br>"; // Bill 的下一个元素是 Steve

print_r (each($people)); // 返回当前元素的键名和键值(目前是 Steve),并向前移动内部指针
?>

结果:Array ( [1] => Steve [value] => Steve [0] => 1 [key] => 1 )

猜你喜欢

转载自blog.csdn.net/sinat_15955423/article/details/84565865
今日推荐