武汉PHP培训
达内武汉民大中心

15827352908

热门课程

PHP数组学习排序全接触

  • 时间:2016-07-21 11:14
  • 发布:第一PHP社区
  • 来源:第一PHP社区

array_values($arr) array
返回数组所有元素
复制代码 - PHP100.com<?php
$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的下标, 一对一对的传哦
复制代码 - PHP100.com<?php
$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, 如果有传入第三个参数,那么第三个参数将传给第二个参数定义的函数当中的第三个参数
复制代码 - PHP100.com<?php
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
此函数只处理数组的第一维
复制代码 - PHP100.com<?php
$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这样排列, 返回值和上面一样
此函数也保留下标和值的关系
复制代码 - PHP100.com<?php
$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可以为数组
解释不清楚, 看例子
复制代码 - PHP100.com<?php
$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, 不然传了也没用。。。
例子
复制代码 - PHP100.com<?php
$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
统计数组中的元素的数目
复制代码 - PHP100.com<?php
$arr = array('a', 'b');
echo count($arr);   //很明显结果为2
?>
 
current($arr) mixed
返回数组中当前指针所指的元素,此函数别名 pos
复制代码 - PHP100.com<?php
$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
?>
上一篇:PHP简单数组排序
下一篇:php_xmlhttp乱码问题解决

php新手必读书物

php运算符的优先级

武汉php培训:优化PHP代码的建议

php到底做什么?

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊