# 跟我学习php数组常用函数-上篇

1. array_map ( callable \$callback , array \$arr1 [, array \$... ] )

callback(回调函数),接受一个函数 函数作用:将arr1的参数顺序的传递给前面的回调函数

• 回调函数有参时:
```/*例1*/

<?php
function  cube ( \$n )
{
return( \$n  *  \$n  *  \$n );
}
\$a  = array( 1 ,  2 ,  3 ,  4 ,  5 );
\$b  =  array_map ( "cube" ,  \$a );
print_r ( \$b );
/**
输出
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
**/
?> ```
• 回调函数无参时:
```<?php
/*例2*/
/*将多个数组进行合并*/
\$a  = array( 1 ,  2 ,  3 ,  4 ,  5 );
\$b  = array( "one" ,  "two" ,  "three" ,  "four" ,  "five" );
\$c  = array( "uno" ,  "dos" ,  "tres" ,  "cuatro" ,  "cinco" );
\$d  =  array_map ( null ,  \$a ,  \$b ,  \$c );
print_r ( \$d );
/*输出
Array
(
[0] => Array
(
[0] => 1
[1] => one
[2] => uno
)
[1] => Array
(
[0] => 2
[1] => two
[2] => dos
)
[2] => Array
(
[0] => 3
[1] => three
[2] => tres
)
[3] => Array
(
[0] => 4
[1] => four
[2] => cuatro
)
[4] => Array
(
[0] => 5
[1] => five
[2] => cinco
)
)
*/
?> ```
1. range ( mixed \$start , mixed \$limit [, number \$step = 1 ] )

step表示间隔值，不写默认为1

```/*

*/
\$nums = range(1, 5);
print_r(\$nums);
/*

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
*/
\$nums = range(1, 5, 2);
print_r(\$nums);
/*

Array ( [0] => 1 [1] => 3 [2] => 5 )
*/```
```/*

*/
\$array = range('a','f');
print_r(\$array);
/*

Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
*/
\$array = array('a', 'f', 2);
print_r(\$array);
/*

print_r(\$array);
/*

Array ( [0] => a [1] => c [2] => e )
*/```
1. array_merge ( array \$array1 [, array \$... ] )

array_merge() 将一个或多个数组的单元合并起来，一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

```/*

*/
\$array1 = array(1, 2, 3, 4, 5);
\$array2 = array(1, 2, 8, 9);
\$array3 = array_merge(\$array1, \$array2);
print_r(\$array3);
/*

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 1
[6] => 2
[7] => 8
[8] => 9
)
*/```
1. array_merge_recursive ( array \$array1 [, array \$... ] ) 递归地合并一个或多个数组

```/*

*/
\$ar1 = array("color" => array("favorite" => "red"), 5);
\$ar2 = array(10, "color" => array("favorite" => array('a'=>"red"), "blue"));
\$result = array_merge_recursive(\$ar1, \$ar2);
print_r(\$result);
/*

Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[a] => red     重点
)
[0] => blue
)
[0] => 5
[1] => 10
)
*/```
```/*

*/
\$ar1 = array("color" => array("favorite" => "red"), 5);
\$ar2 = array(10, "color" => array("favorite" =>"red", "blue"));
\$result = array_merge_recursive(\$ar1, \$ar2);
print_r(\$result);
/*

Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => red  重点
)
[0] => blue
)
[0] => 5
[1] => 10
)
*/```
```<?php
\$input = array(12, 10, 9);
// result is array(12, 10, 9, 0, 0)
// result is array(-1, -1, -1, -1, 12, 10, 9)
/*

*/
?>```
1. array_pop ( array &\$array ) 移出最后一个元素，原数组会改变

array_pop() 弹出并返回 array 数组的最后一个单元，并将数组 array 的长度减一。 如果 array 为空（或者不是数组）将返回 NULL 。 此外如果被调用不是一个数则会产生一个 Warning。

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

Array
(
[0] => orange
[1] => banana
[2] => apple
)
*/```
1. array_shift() 将数组开头的单元移出数组,原数组会改变, 使用此函数后会重置（reset()）array 指针。

array_shift() 将 array 的第一个单元移出并作为结果返回，将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数，文字键名将不变。 如果 array 为空（或者不是数组）将返回 NULL

1. int array_push ( array &\$array , mixed \$var [, mixed \$... ] )
• array_push() 将 array 当成一个栈，并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加
• 返回处理后数组的元素个数
1. reset ( array &\$array )将数组的内部指针指向第一个单元
• reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值。
• 数组为空返回false
1. end ( array &\$array )

• end() 将 array 的内部指针移动到最后一个单元并返回其值。
• 数组为空返回false
```<?php
funcation back(){
\$arr = array(1, 2, 3);
return \$arr;
}
/*上面引用传递的意思请注意看*/
\$num = end(back()); //错误！,因为该参数是引用传递

\$array = back();
\$num = end(\$array); //正确```

0 条评论

• ### 跟我学习php数组常用函数-下篇

如果是递归的,结果:array('hobby' => array('a' => 'ping-pong', 'b' => 'basketball'));

• ### python 快排算法

先说两句题外话，一般意义上的栈有两层含义，一层是后进先出的数据结构栈，一层是指函数的内存栈，归根结底，函数的内存栈的结构就是一个后进先出的栈。汇编代码中，调用一...

• ### PHP数组array类常见操作示例

array_diff(arr1,arr2);//计算数组的差集（对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。）

• ### 浅谈PHP array_search 和 in_array 函数效率问题

在一个接口中，发现非常耗时，排查原因发现 array_search 查找数组中的元素的 key 时，效率随着数组变大，耗时增加。特别是大数组时，非常耗时。在函数...

• ### PHP实现二维数组（或多维数组）转换成一维数组的常见方法总结

本文实例总结了PHP实现二维数组（或多维数组）转换成一维数组的常见方法。分享给大家供大家参考，具体如下：

• ### python--几种快速排序的实现以及运行时间比较

快速排序的基本思想：首先选定一个数组中的一个初始值，将数组中比该值小的放在左边，比该值大的放在右边，然后分别对左边的数组进行如上的操作，对右边的数组进行如上的操...

• ### 3分钟短文 | PHP数组获取最后一个元素，10个方式中哪个有错？

我们对于 PHP 的数组操作乐此不疲，为什么？因为 PHP 编程你几乎时时刻刻都在于数组打交道，对于数组的操作熟练程度，很大一部分因素关系着代码的优劣。