array_values($arr) array 返回数组所有元素 <div class="codetitle"><a style="CURSOR: pointer" data="46609" class="copybut" id="copybut46609" onclick="doCopy('code46609')"> 代码如下:<div class="codebody" id="code46609"> <?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,2); ?> array_walk($arr,$func,[$data]) bool 使用用户自定义的函数遍历所有的元素,返回true/false 注意:此函数只处理数组的第一维 $func是一个函数名 默认会传入两个参数 第一个 $arr的值, 第二个$arr的下标, 一对一对的传哦 <div class="codetitle"><a style="CURSOR: pointer" data="38323" class="copybut" id="copybut38323" onclick="doCopy('code38323')"> 代码如下:<div class="codebody" id="code38323"><?php $arr = array('a','b','c'); arraywalk($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','c',array(1,2,3)); 打印结果将是 array('x_a','x_c','x_Array'); ?> 现在传入第三那个参数$data,如果有传入第三个参数,那么第三个参数将传给第二个参数定义的函数当中的第三个参数 <div class="codetitle"><a style="CURSOR: pointer" data="16296" class="copybut" id="copybut16296" onclick="doCopy('code16296')"> 代码如下:<div class="codebody" id="code16296"> <?php arraywalk($arr,'test','x'); function test(&$val,$key,$prefix) { $val = $prefix . $val; //其实这里的$prefix就是上面的x_ } print_r($arr); //输出结果和上面一样 array('x_a','x_c'); ?> arsort($arr) bool 对数组$arr进行倒序排列并保留下标和值的关系,如果排序成功返回true 否则返回 false 此函数只处理数组的第一维 <div class="codetitle"><a style="CURSOR: pointer" data="55817" class="copybut" id="copybut55817" onclick="doCopy('code55817')"> 代码如下:<div class="codebody" id="code55817"> <?php $arr = array('a' => 'a','b' => 'b','c' => 'c'); arsort($arr); print_r($arr); //打印结果: array('c' => 'c','a' => 'a'); 如果有数字那么数字会在字符前面 ?> asort($arr) bool 对数组$arr进行正序排列也就是a-z这样排列, 返回值和上面一样 此函数也保留下标和值的关系 <div class="codetitle"><a style="CURSOR: pointer" data="37255" class="copybut" id="copybut37255" onclick="doCopy('code37255')"> 代码如下:<div class="codebody" id="code37255"> <?php $arr = array('a' => 'a','c' => 'c'); asort($arr); print_r($arr); //结果没变, 就是原那数组 $arr = array('c' => 'c','a' => 'a'); asort($arr); print_r($arr); //结果:array('a' => 'a','c' => 'c'); ?> compact($varname,....,$varname) array 接受n个$varname并将$varname当做下标$varname的值当做值创建一个数组$varname可以为数组 解释不清楚, 看例子 <div class="codetitle"><a style="CURSOR: pointer" data="19501" class="copybut" id="copybut19501" onclick="doCopy('code19501')"> 代码如下:<div class="codebody" id="code19501"> <?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, 不然传了也没用。。。 例子 <div class="codetitle"><a style="CURSOR: pointer" data="46204" class="copybut" id="copybut46204" onclick="doCopy('code46204')"> 代码如下:<div class="codebody" id="code46204"> <?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 统计数组中的元素的数目 <div class="codetitle"><a style="CURSOR: pointer" data="66094" class="copybut" id="copybut66094" onclick="doCopy('code66094')"> 代码如下:<div class="codebody" id="code66094"> <?php $arr = array('a','b'); echo count($arr); //很明显结果为2 ?> current($arr) mixed 返回数组中当前指针所指的元素,此函数别名 pos <div class="codetitle"><a style="CURSOR: pointer" data="32982" class="copybut" id="copybut32982" onclick="doCopy('code32982')"> 代码如下:<div class="codebody" id="code32982"> <?php $arr = array('a','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 ?> each($arr) array 重数组$arr中返回一对 key/value也就是 下标/值 <div class="codetitle"><a style="CURSOR: pointer" data="32318" class="copybut" id="copybut32318" onclick="doCopy('code32318')"> 代码如下:<div class="codebody" id="code32318"><?php $arr = array('a' => 1,'b' => 2,'c' => c); $res = each($arr); print_r($res); //结果为 array('0' => 'a','key' => 'a',1 => 1,'value' => 1) //返回结果 0 和 key 都代表 下标 1 和 value 代表值 //没使用一次each数组内部指针就会向下移动一次, 如果已经是数组末端, 将返回false $res = each($arr); print_r($res); //结果就会变成 array('0' => 'b','key' => 'b',1 => 2,'value' => 2) ?> list($val,..,[$val]) void 无返回值 把数组中的值赋给一些变量$val <div class="codetitle"><a style="CURSOR: pointer" data="7751" class="copybut" id="copybut7751" onclick="doCopy('code7751')"> 代码如下:<div class="codebody" id="code7751"> <?php $arr = array('颜色','字母A','字母B'); list($color,$a,$b) = $arr; //注意这里list的参数$val 位置是和数组中的位置对应, 重左到右 echo $color; //结果 '颜色' echo $a; //结果 '字母A' list($color,$b) = $arr; //这样空一个 echo $color; //结果 '颜色' echo $a; //结果 一样都没有, 因为就没给a赋值哦, 哪里也空出来咯 echo $b; //结果 '字母B' //list each 一起用 $arr = array('颜色','字母B'); while(list($key,$val) = each($arr)) { echo '下标:' . $key; echo '----值:' . $val; echo ' '; } //输出结果为 //下标:0----值:颜色 //下标:1----值:字母A //下标:2----值:字母B ?> krsort($arr,[$type]) bool 对数组$arr按照其下标进行倒序排列 还有一个ksort(); 这个是按下标进行升序排列 $type 是排序方式 <div class="codetitle"><a style="CURSOR: pointer" data="81453" class="copybut" id="copybut81453" onclick="doCopy('code81453')"> 代码如下:<div class="codebody" id="code81453"><?php $arr = array('a' => 1,'c' => 3); krsort($arr); print_r($arr); //打印结果: array('c' => 3,'a' => 1); ?> range($go,$end,[$setup) array 这个有点不好解释 <div class="codetitle"><a style="CURSOR: pointer" data="33791" class="copybut" id="copybut33791" onclick="doCopy('code33791')"> 代码如下:<div class="codebody" id="code33791"> <?php $arr = range(1,10); print_r($arr); //结果array(1,3,4,10); $arr = range(1,10,2); //这里指定第三个参数, 也就是步长 print_r($arr); //结果array(1,5,7,9); $arr = range('a','z'); print_r($arr); //结果 array('a',...,'z'); ?> sort($arr); 将数组重a-z进行排序 <div class="codetitle"><a style="CURSOR: pointer" data="76775" class="copybut" id="copybut76775" onclick="doCopy('code76775')"> 代码如下:<div class="codebody" id="code76775"><?php $arr = array("lemon","orange","banana","apple"); sort($arr); print_r($arr); //结果array('apple','banana','lemon','orange'); //还有个z-a进行排序的函数rsort ?> shuffle($arr) bool 将数组$arr进行乱排序, 也就是随机排序 <div class="codetitle"><a style="CURSOR: pointer" data="938" class="copybut" id="copybut938" onclick="doCopy('code938')"> 代码如下:<div class="codebody" id="code938"> <?php $arr = range(1,10); shuffle($arr); print_r($arr); //结果是什么我也不知道, 因为是随机的 ?> usort($arr,$func) bool 使用你自己定义的函数对$arr进行排序$func是自定义函数 <div class="codetitle"><a style="CURSOR: pointer" data="28450" class="copybut" id="copybut28450" onclick="doCopy('code28450')"> 代码如下:<div class="codebody" id="code28450"> <?php $arr = array(1,8,3); usort($arr,'test'); function test($a,$b) { return $a == $b ? 0 : $a < $b ? 1 : -1; } print_r($arr); //打印结果 Array ( [0] => 8 [1] => 5 [2] => 3 [3] => 2 [4] => 1 [5] => 0 ) // 这函数没弄懂哦。。 不知道参数$a,$b 代表的是什么? 看手册也没看懂, 如果这么简单的排序用ksort就行咯rsort // 这样的函数还有两个 uksort,和uasort都没弄懂, 郁闷。。。 ?> 总结一下 <div class="codetitle"><a style="CURSOR: pointer" data="92797" class="copybut" id="copybut92797" onclick="doCopy('code92797')"> 代码如下:<div class="codebody" id="code92797"> <?php array_values() //返回数组中所有元素 array_walk() //使用自定义函数遍历数组都一个单元 arsort(); //保留数组下标于值的关系进行倒序排列 asort() //保留数组下标于值的关系进行正序排列 compact() //将变量导入到数组中, 以变量名为下标, 值为值 extract() //将数组导入到变量, 下标为变量名, 值为值 count() //统计数组有多少个元素 current() //当前指针所指元素 next() //指针向下移动 prev() //指针向上移动 end() //指针移动到数组末尾 reset() //指针移动到数组开头 key() //返回当前指针所指元素的下标 each() //返回一对 key/value list() //将数组导入到变量中 krsort() //按照下标进行倒序排列 ksort() //按照下标进行升序排列 range() //创建数组 sort() //按值重小到大排列 rsort() //按值重大到些排列 shuffle() //随机排列 usort() //......无语这个函数, Google去咯 ?>
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|