Home  >  Article  >  Backend Development  >  PHP 数组学习排序全接触_PHP

PHP 数组学习排序全接触_PHP

WBOY
WBOYOriginal
2016-06-01 12:22:32761browse

array_values($arr) array
返回数组所有元素
复制代码 代码如下:
$arr = array("a", "b", "c");
$arr = array_flip($arr); //反转数组的下标和值现在的$arr = array(0, 1, 2);
$arr = array_values($arr); //返回数组$arr中的所有元素
print_r($arr); //结果: array(0, 1, 2);
?>


array_walk($arr, $func, [$data]) bool
使用用户自定义的函数遍历所有的元素,返回true/false
注意:此函数只处理数组的第一维
$func是一个函数名
默认会传入两个参数 第一个 $arr的值, 第二个$arr的下标, 一对一对的传哦
复制代码 代码如下:$arr = array('a', 'b', 'c');
array_walk($arr, 'test'); //这里第二个参数test就是函数名
function test(&$val, $key) //这里第一个参数加上引用, 那么修改$val就等于修改$arr中的元素
{
$val = 'x_' . $val; //这里给他加一个前缀
}
print_r($arr); //输出结果 array('x_a', 'x_b', 'x_c');
//这里如果把$arr改成 $arr = array('a', 'b', 'c', array(1, 2, 3)); 打印结果将是 array('x_a', 'x_b', 'x_c', 'x_Array');
?>

现在传入第三那个参数$data, 如果有传入第三个参数,那么第三个参数将传给第二个参数定义的函数当中的第三个参数
复制代码 代码如下:
array_walk($arr, 'test', 'x_');
function test(&$val, $key, $prefix)
{
$val = $prefix . $val; //其实这里的$prefix就是上面的x_
}
print_r($arr); //输出结果和上面一样 array('x_a', 'x_b', 'x_c');
?>


arsort($arr) bool
对数组$arr进行倒序排列并保留下标和值的关系,如果排序成功返回true 否则返回 false
此函数只处理数组的第一维
复制代码 代码如下:
$arr = array('a' => 'a', 'b' => 'b', 'c' => 'c');
arsort($arr);
print_r($arr); //打印结果: array('c' => 'c', 'b' => 'b', 'a' => 'a'); 如果有数字那么数字会在字符前面
?>

asort($arr) bool
对数组$arr进行正序排列也就是a-z这样排列, 返回值和上面一样
此函数也保留下标和值的关系
复制代码 代码如下:
$arr = array('a' => 'a', 'b' => 'b', 'c' => 'c');
asort($arr);
print_r($arr); //结果没变, 就是原那数组
$arr = array('c' => 'c', 'b' => 'b', 'a' => 'a');
asort($arr);
print_r($arr); //结果:array('a' => 'a', 'b' => 'b', 'c' => 'c');
?>

compact($varname, ...., $varname) array
接受n个$varname并将$varname当做下标$varname的值当做值创建一个数组$varname可以为数组
解释不清楚, 看例子
复制代码 代码如下:
$a = "变量a";
$b = "变量b";
$arr = compact('a', 'b'); //这里传入 a b 分别为上面定义的变量名称
print_r($arr); //打印结果为 array('a' => '变量a', 'b' => '变量b');
//还可以把变量名称当做数组传入
$vars = array('a', 'b');
$arr = compact($vars);
print_r($arr); //结果和上面一样, 其实这个函数就是做extract的相反操作
?>

extract($arr, $type, $prefix) int
将数组$arr的下标当做变量名, 值当做变量的值
$arr 目标数组
$type 这个是遇过遇到相同下标使用什么方式处理, 值是PHP已经定义了的常量
EXTR_OVERWRITE 如果相同, 那么就覆盖前面的那个变量, 默认就是这个
EXTR_SKIP 如果相同, 不覆盖前面那个变量
EXTR_PREFIX_SAME 如果相同, 那么使用第三个参数$prefix加到变量名前
EXTR_PREFIX_ALL 把所有变量名称都加上$prefix当做前缀
注意在$type为EXTR_PREFIX_SAME或EXTR_PREFIX_ALL时才需要传入参数$prefix, 不然传了也没用。。。
例子
复制代码 代码如下:
$arr = array('a' => '变量a', 'b' => '变量b');
extract($arr, EXTR_OVERWRITE); //如果有相同,那么覆盖
echo $a; //输出结果将是 '变量a'
echo $b; //结果: '变量b'
$arr = array('a' => '变量a', 'b' => '变量b', 'a' => '第二个变量a'); //这里有两个元素下标都为a
extract($arr);
echo $a; //输出结果是: '第二个变量a' 很明显已经覆盖了 '变量a' 因为默认第二个参数是 EXTR_OVERWRITE
?>


count($arr) int
统计数组中的元素的数目
复制代码 代码如下:
$arr = array('a', 'b');
echo count($arr); //很明显结果为2
?>

current($arr) mixed
返回数组中当前指针所指的元素,此函数别名 pos
复制代码 代码如下:
$arr = array('a', 'b', 'c');
echo current($arr); //结果为 'a'
echo next($arr); //指针向下一个移动,所以现在指针所指的是b 输出结果当然为 'b'
echo current($arr); //结果又是b 因为当前指针就在b这哦
echo end($arr) //指针移动到数组最后, 并返回结果, 所以结果为c
echo prev($arr); //指针向上一个移动, 结果b
echo key($arr); //返回指针所指元素的下标 因为上面指针到了b那么所有 结果为1 因为b的下标就是1
echo reset($arr); //重置指针都数组开头 结果a
?>

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