Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381161
  • 博文数量: 104
  • 博客积分: 652
  • 博客等级: 上士
  • 技术积分: 1477
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-04 15:20
文章分类

全部博文(104)

文章存档

2019年(1)

2015年(8)

2014年(6)

2013年(59)

2012年(30)

分类: PHP

2013-03-14 17:38:46

一 、数组键/值操作有关的函数
    1. array array_values ( array $input ) -- 返回数组中所有的值并给其建立数字索引。    
        
  1. <?php
  2. $aaa = array('one'=>1,'two'=>2,'three'=>3);

  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. $bbb = array_values($aaa);

  7. echo '
    ';
  8. print_r($bbb);
  9. echo '';

  10. ?>


    2. array array_keys ( array $input [, $search_value [, bool $strict ]] ) — 返回数组中所有的键名  
        //返回数组中的数字或者字符串的键名。
        //如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所有键名都会被返回。自 PHP 5 起,可以用 strict 参数来进行全等比较(===)。

  1. <?php
  2. $aaa = array('one'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. $ddd = array_keys($aaa,'1');
  7. echo '
    ';
  8. print_r($ddd);
  9. echo '';

  10. $eee = array_keys($aaa,'1',true);
  11. echo '
    ';
  12. print_r($eee);
  13. echo '';

  14. ?>


    3. bool in_array ( $needle , array $haystack [, bool $strict ] ) — 检查数组中是否存在某个值
        //在 haystack 中搜索 needle,如果找到则返回 TRUE,否则返回 FALSE
        //如果第三个参数 strict 的值为 TRUEin_array() 函数还会检查 needle 的是否和 haystack 中的相同。

  1. <?php
  2. $aaa = array('one'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. if(in_array(2,$aaa)){
  7.     echo 'exist
    '
    ;
  8. }else{
  9.     echo 'not exist
    '
    ;
  10. }

  11. if(in_array('2',$aaa,true)){
  12.     echo 'exist
    '
    ;
  13. }else{
  14.     echo 'not exist
    '
    ;
  15. }

  16. ?>


    4. bool array_key_exists ( $key , array $search ) — 检查给定的键名或索引是否存在于数组中
        //array_key_exists() 在给定的 key存在于数组中时返回 TRUEkey可以是任何能作为数组索引的值。array_key_exists()也可用于对象。

  1. <?php
  2. $aaa = array('one'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. if(array_key_exists(three,$aaa)){
  7.     echo 'exist
    '
    ;
  8. }else{
  9.     echo 'not exist
    '
    ;
  10. }
  11. ?>


    5. array array_flip ( array $trans ) -- 交换数组中的键和值
        //array_flip() 返回一个反转后的 ,例如 trans 中的键名变成了值,而 trans 中的值成了键名。
        //注意 trans 中的值需要能够作为合法的键名,例如需要是 或者 。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转
        //如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。
        //array_flip() 如果失败返回 FALSE

  1. <?php
  2. $aaa = array('one'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. $bbb = array_flip($aaa);
  7. echo '
    ';
  8. print_r($bbb);
  9. echo '';

  10. $aaa = array('one'=>1,'one_m'=>1,'one_n'=>1,'two'=>2,'three'=>3);
  11. $ccc = array_flip($aaa);
  12. echo '
    ';
  13. print_r($ccc);
  14. echo '';
  15. ?>

    6. array_reverse --  返回一个单元顺序相反的数组
        //array_reverse() 接受数组 array 作为输入并返回一个单元为相反顺序的新数组,如果 preserve_keysTRUE 则保留原来的键名。

  1. <?php
  2. $aaa = array('one'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. $bbb = array_reverse($aaa);
  7. echo '
    ';
  8. print_r($bbb);
  9. echo '';
  10. ?>

   
二、统计数组元素的个数和惟一性
    1. int count ( $var [, int $mode ] ) — 计算数组中的单元数目或对象中的属性个数 别名 sizeof()
        //返回 var 中的单元数目,通常是一个 ,任何其它类型都只有一个单元。

  1. <?php
  2. $aaa = array('one'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. echo count($aaa);
  7. ?>


    2. array array_count_values ( array $input ) -- 统计数组中所有的值出现的次数
        //array_count_values() 返回一个数组,该数组用 input数组中的值作为键名,该值在 input 数组中出现的次数作为值。

  1. <?php
  2. $aaa = array('one'=>1,'one2'=>1,'one3'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. $bbb = array_count_values($aaa);
  7. echo '
    ';
  8. print_r($bbb);
  9. echo '';
  10. ?>


    3. array array_unique ( array $array ) -- 移除数组中重复的值
        //array_unique() 接受 array 作为输入并返回没有重复值的新数组。
        //注意键名保留不变。array_unique()先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。

  1. <?php
  2. $aaa = array('one'=>1,'one2'=>1,'one3'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. $bbb = array_unique($aaa);
  7. echo '
    ';
  8. print_r($bbb);
  9. echo '';
  10. ?>


三、使用回调函数处理数组的函数
    1. array array_filter ( array $input [, $callback ] )  用回调函数过滤数组中的单元 
        //array_filter() 依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

  1. <?php
  2. $aaa = array('one'=>1,'one2'=>1,'one3'=>1,'two'=>2,'three'=>3);
  3. echo '
    ';
  4. print_r($aaa);
  5. echo '';

  6. function even($var){
  7.     return ($var % 2 == 0);
  8. }

  9. echo '
    ';
  10. print_r(array_filter($aaa,even));
  11. echo '';
  12. ?>


    2. bool array_walk ( array &$array , $funcname [, $userdata ] )   数组中的每个成员应用用户函数
        //成功时返回 TRUE, 或者在失败时返回 FALSE.

        //将用户自定义函数 funcname 应用到 array 数组中的每个单元。典型情况下 funcname 接受两个参数。array参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata,将被作为第三个参数传递给 callback funcname

        //如果 funcname 函数需要的参数比给出的多,则每次 array_walk() 调用 funcname时都会产生一个 级的错误。这些警告可以通过在 array_walk() 调用前加上 PHP 的错误操作符 来抑制,或者用


  1. <?php
  2. $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

  3. function alter(&$array,$key,$addDate){
  4.     $array = $addDate.' '.$array;
  5. }

  6. function cout(&$array,$key){
  7.     echo $key.'.'.$array.'
    '
    ;
  8. }

  9. echo '
    '
    ;
  10. array_walk($fruits,cout);
  11. echo '
    '
    ;
  12. array_walk($fruits,alter,good);
  13. echo '
    '
    ;
  14. array_walk($fruits,cout);

  15. ?>


    3. array array_map ( $callback , array $arr1 [, array $... ] )
        //array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

  1. <?php
  2. function cube($n)
  3. {
  4.     return($n * $n * $n);
  5. }

  6. $a = array(1, 2, 3, 4, 5);
  7. $b = array_map("cube", $a);
  8. print_r($b);
  9. ?>



  1. function show_Spanish($n, $m)
  2. {
  3.     return("The number $n is called $m in Spanish");
  4. }

  5. function map_Spanish($n, $m)
  6. {
  7.     return(array($n => $m));
  8. }

  9. $a = array(1, 2, 3, 4, 5);
  10. $b = array("uno", "dos", "tres", "cuatro", "cinco");

  11. $c = array_map("show_Spanish", $a, $b);
  12. echo '
    ';
  13. print_r($c);
  14. echo '';

  15. $d = array_map("map_Spanish", $a , $b);
  16. echo '
    ';
  17. print_r($d);
  18. echo '';



  1. $a = array(1, 2, 3, 4, 5);
  2. $b = array("one", "two", "three", "four", "five");
  3. $c = array("uno", "dos", "tres", "cuatro", "cinco");

  4. $d = array_map(null, $a, $b, $c);
  5. echo '
    ';
  6. print_r($d);
  7. echo '';


四、数组的排序函数
    1. 简单的数组排序
        bool sort ( array &$array [, int $sort_flags ] )
        //本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。

        bool rsort ( array &$array [, int $sort_flags ] )
        //本函数对数组进行逆向排序(最高到最低)。

  1. <?php
  2. $fruits = array("lemon", "orange", "banana", "apple");
  3. sort($fruits);
  4. foreach ($fruits as $key => $val) {
  5.     echo "fruits[".$key."] = " . $val . "
    "
    ;
  6. }

  7. echo '
    '
    ;

  8. rsort($fruits);
  9. foreach ($fruits as $key => $val) {
  10.     echo "fruits[".$key."] = " . $val . "
    "
    ;
  11. }
  12. ?>


    2. 根据键名对数组排序
        ksort() krsort()
    3. 根据元素的值对数组排序
        asort() arsort()
    4. 根据“自然数排序”法对数组排序
        natsort()  natcasesort()
    5. 根据用户自定义规则对数组排序
        usort() uasort() uksort()
    6.多维数组的排序
        array_multisort

五、拆分、合并、分解、接合的数组函数
      1. array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] ) — 从数组中取出一段
    2. array array_splice ( array &$input , int $offset [, int $length [, array $ replacement ]] ) — 把数组中的一部分去掉并用其它值取代
    3. array array_combine ( array $keys , array $values ) — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
    4. array array_merge ( array $array1 [, array $array2 [, array $... ]] ) — 合并一个或多个数组
    5. array array_intersect ( array $array1 , array $array2 [, array $ ... ] ) — 计算数组的交集
    6. array array_diff ( array $array1 , array $array2 [, array $ ... ] ) — 计算数组的差集

六、 数组与数据结构的函数
    1. 使用数据实现堆栈
        int array_push ( array &$array , $var [, $... ] ) — 将一个或多个单元压入数组的末尾(入栈)
         array_pop ( array &$array ) — 将数组最后一个单元弹出(出栈)

    2. 使用队列
        int array_unshift ( array &$array , $var [, $... ] ) — 在数组开头插入一个或多个单元
         array_shift ( array &$array ) — 将数组开头的单元移出数组
        void unset ( $var [, $var [, $... ]] ) — 释放给定的变量

七、其它与数据操作有关的函数 
         array_rand ( array $input [, int $num_req ] ) — 从数组中随机取出一个或多个单元
        sbool shuffle ( array &$array ) — 将数组打乱
         array_sum ( array $array ) — 计算数组中所有值的和
        array range ( $low , $high [, $step ] ) — 建立一个包含指定范围单元的数组


阅读(1518) | 评论(0) | 转发(0) |
0

上一篇:php 数组

下一篇:MVC模式&框架

给主人留下些什么吧!~~