zoukankan      html  css  js  c++  java
  • PHP 数组函数练习

      1 <?php
      2     header("content-type:text/html;charset=uft-8");
      3     $arr = array(
      4         'a' => 1,
      5         'B' => 2,
      6     );
      7     $arr = array_change_key_case($arr,CASE_UPPER);
      8     echo "array_change_key_case: CASE_UPPER ...CASE_LOWER the same as CASE_UPPER<pre>";
      9     print_r($arr);
     10     echo "</pre><br/>";
     11 
     12     $arr = array(
     13         'a' => 1,
     14         'v' => 2,
     15         'c' => 3,
     16         'd' => 4,
     17         'e' => 5,
     18     );
     19     //对数组进行分块,是否保留原有的key,array_chunk($inputs,$size[,bool $preserve_key]) 
     20     echo "array_chunk: <pre>";
     21     print_r(array_chunk($arr, 2 , true));
     22     echo "</pre><br/>";
     23 
     24     //对key和value进行组合,两个数组的个数要相同,不然会爆warning
     25     $a = array('1','2','3','4');
     26     $b = array('a','b','c','d');
     27     echo "array_combine: <pre>";
     28     print_r(array_combine($a, $b));
     29     echo "</pre><br/>";
     30 
     31     //对数组中的value进行计算
     32     $arr = array(
     33         'a' => 1,
     34         'v' => 2,
     35         'c' => 3,
     36         'd' => 4,
     37         'e' => 5,
     38         'as' => 1,
     39     );
     40     echo "array_count_values: <pre>";
     41     print_r(array_count_values($arr));
     42     echo "</pre><br/>";
     43 
     44     //对数组进行差集计算,计算出包含在$a中,而不在其他参数数组中的值,判断条件为 (string)elem1 == (string)elem2
     45     $a = array(1,2,3,4);
     46     $b = array(1,2);
     47     echo "array_diff: <pre>";
     48     print_r(array_diff($a,$b));
     49     echo "</pre><br/>";
     50 
     51     //对数组进行差集计算,计算出包含在$a中,而不在其他参数数组中的值,判断条件为 (string)key1 == (string)key2,(string)values1 == (string)values2
     52       $a = array("red" => 1,"black" => 2 , 1 => 2);
     53     $b = array("red" => 1, "1" => "3");
     54     echo "array_diff_assoc: <pre>";
     55     print_r(array_diff_assoc($a,$b));
     56     echo "</pre><br/>";
     57 
     58     //对数组进行差集计算,计算出包含在$a中,而不再其他参数数组中的值,判断条件为 (string)key1 == (string)key2
     59     $a = array("red" => 1,"black" => 2 , 1 => 2);
     60     $b = array("red" => 1, "1" => "3");
     61     echo "array_diff_key: <pre>";
     62     print_r(array_diff_key($a, $b));
     63     echo "</pre><br/>";
     64 
     65     //对数组进行差集计算,计算出包含在$a中,而不在其他参数数组中的值,判断条件为 (string)key1 == (string)key2,(string)values1 == (string)values2
     66     function my_array_diff_uassoc($a,$b){
     67         if($a == $b){
     68             return 0;
     69         }
     70         return $a > $b ? 1 : -1;
     71     }
     72     $a = array("red" => 1,"black" => 2 , 1 => 2);
     73     $b = array("red" => 1, "1" => "2");
     74     echo "array_diff_uassoc :<pre>";
     75     print_r(array_diff_uassoc($a,$b,"my_array_diff_uassoc"));
     76     echo "</pre><br/>";
     77 
     78     //对数组进行差集计算,计算出包含在$a中,而不再其他参数数组中的值,判断条件为 (string)key1 == (string)key2
     79     function my_array_diff_ukey($a,$b){
     80         if($a == $b){
     81             return 0;
     82         }
     83         return $a > $b ? 1 : -1;
     84     }
     85     $a = array("red" => 1,"black" => 2 , 1 => 2);
     86     $b = array("red" => 1);
     87     $c = array("1" => "2");
     88     echo "array_diff_ukey: <pre>";
     89     print_r(array_diff_ukey($a, $b,$c,"my_array_diff_ukey"));
     90     echo "</pre><br/>";    
     91 
     92     //array_fill ,对数组给定的值  array_fill($start,$size,$value);  $start => 下标开始位置,$size给定数组大小,$value => 数值
     93     echo "array_fill: <pre>";
     94     print_r(array_fill(1,10,"banana"));
     95     echo "</pre><br/>";
     96 
     97     //array_fill_keys,组合一个数组,key可以自己定义,every key => $value ....
     98     echo "array_fill_keys:<pre>";
     99     $keys = array('hello',2,3,'foo');
    100     $value = array(1,2,3,4);
    101     print_r(array_fill_keys($keys,'111'));
    102     echo "</pre><br/>";
    103 
    104     //array_filter,自定义一个过滤函数,根据过滤的值得到返回参数
    105     function my_array_filter($a){
    106         return $a % 2;
    107     }
    108     $arr = array(1,2,3,0);
    109     echo "array_filter: <pre>";
    110     print_r(array_filter($arr,'my_array_filter'));
    111     print_r(array_filter($arr));
    112     echo "</pre><br/>";
    113 
    114     //array_flip,将数组的key 和 value进行交换,3 => 5, 4 => 5会覆盖
    115     $arr = array(1 => 2,3 => 5,4 => 5);
    116     echo "array_flip: <pre>";
    117     print_r(array_flip($arr));
    118     echo "</pre><br/>";
    119 
    120     //array_intersect,返回一个包含在$a中,同时出现中其他数组中的值
    121     $a = array(1,2,3,4);
    122     $b = array(1);
    123     $c = array(1,2,3);
    124     echo "array_intersect: <pre>";
    125     print_r(array_intersect($a,$b,$c));
    126     echo "</pre><br/>";
    127 
    128     //array_intersect_assoc,返回一个包含在$a中,同时出现在其中数组中的值 判断条件为(string)key1 == (string)key2 , (string)value1 ==  (string)value2
    129      $a = array(1,2,3,4);
    130     $b = array(1);
    131     $c = array('0' => '1',2,3);
    132     echo "array_intersect_assoc: <pre>";
    133     print_r(array_intersect_assoc($a,$b,$c));
    134     echo "</pre><br/>";
    135 
    136     //array_intersect_key,返回一个包含在$a中同时出现在其他数组中key对应的值,(string)key1 == (string)key2
    137     $a = array('a','b','c','d');
    138     $b = array(1);
    139     $c = array(2);
    140     echo "array_intersect_key: <pre>";
    141     print_r(array_intersect_key($a,$b,$c));
    142     echo "</pre><br/>";
    143 
    144     //array_intersect_uassoc 与array_intersect()不同的是,key用于回调函数,(string)value1 == (string)value2
    145     $a = array('red' => 'a',"black" => 2, '333' => 2);
    146     $b = array('Red' => 'a');
    147     echo "array_intersect_uassoc: <pre>";
    148     print_r(array_intersect_uassoc($a, $b, 'strcasecmp'));
    149     echo "</pre><br/>";
    150 
    151     //array_intersect_ukey  用回调函数来比较key
    152     $a = array('red' => 'a','black' => 2);    
    153     $b = array('RED' => 'b');
    154     echo "array_intersect_key: <pre>";
    155     print_r(array_intersect_ukey($a, $b , 'strcasecmp'));
    156     echo "</pre><br/>";
    157 
    158     //array_keys  array_keys($a,5,true),$a 只返回 keys, search_value 返回对应value的key , bool strict,是否严格
    159     $a = array(2,3,4,5,5);
    160     echo "array_keys: <pre>";    
    161     print_r(array_keys($a,5,true));
    162     echo "</pre><br/>";
    163 
    164     //array_map
    165     function my_array_map($a){
    166         return $a * $a * $a;
    167     }
    168     $a = array(2,3,4,5,5);
    169     echo "array_map: <pre>";
    170     print_r(array_map('my_array_map',$a));
    171     echo "</pre><br/>";
    172 
    173     //array_merge
    174     $a = array("0" => "red",'re' => 1);
    175     $b = array("0" => "yellow","re" => 2);
    176     echo "array_merge: <pre>";
    177     print_r(array_merge($a,$b));
    178     echo "</pre><br/>";
    179 
    180     //array_merge_recursive
    181     $ar1 = array("color" => array("favorite" => "red"), 5);
    182     $ar2 = array(10, "color" => array("favorite" => "green", "blue"));
    183     $result = array_merge_recursive($ar1, $ar2);
    184     echo "array_merge_recursive: <pre>";
    185     print_r($result);
    186     echo "</pre><br/>";
    187 
    188     //array_multisort 对多维数组进行排序,或者多个数组排序
    189     $data[] = array('volume' => 67, 'edition' => 2);
    190     $data[] = array('volume' => 86, 'edition' => 1);
    191     $data[] = array('volume' => 85, 'edition' => 6);
    192     $data[] = array('volume' => 98, 'edition' => 2);
    193     $data[] = array('volume' => 86, 'edition' => 6);
    194     $data[] = array('volume' => 67, 'edition' => 7);
    195     $v = array();
    196     $e = array();
    197     foreach ($data as $key => $value) {
    198         $v[] = $value['volume'];
    199         $e[] = $value['edition'];
    200     }
    201     array_multisort($v,SORT_ASC,$e,SORT_ASC,$data);
    202     echo "array_multisort: <pre>";
    203     print_r($data);
    204     echo "</pre><br/>";
    205 
    206     //array_pad   一个数组填充函数,对数组进行填充,array_pad($inputs,$size,$pad_value) ....size > 0 ,在右侧填充,size < 0 在左侧填充, abs($size) > count($inputs) 否侧不填充
    207     $arr = array(2,3,4);
    208     $inputs = array_pad($arr,-10,"no");
    209     echo "array_pad: <pre>";
    210     print_r($inputs);
    211     echo "</pre><br/>";
    212 
    213     //array_pop ....出栈,长度减去1,返回出栈元素
    214     $arr = array(1,2,4);
    215     echo "array_pop: <pre>";
    216     print_r(array_pop($arr));
    217     echo "</pre><br/>";
    218 
    219 
    220     //array_product 计算数组中元素的乘积
    221     $arr = array(1,2,3,4);
    222     echo "array_product: <pre>";
    223     print_r(array_product($arr));
    224     echo "</pre><br/>";
    225 
    226     //array_sum 计算数组中元素的和
    227     $arr = array(1,2,3,4);
    228     echo "array_sum: <pre>";
    229     print_r(array_sum($arr));
    230     echo "</pre><br/>";
    231 
    232     //array_push 入栈,返回数组单元总数
    233     $arr = array(1,2,3,4);
    234     echo "array_psuh: <pre>";
    235     print_r(array_push($arr, 6,5));
    236     echo "</pre><br/>";
    237 
    238     //array_rand 随机抽取数组中的size个 array_rand($inputs,$size)   $inputs为数组
    239     $arr = array(1,2,3,4);
    240     echo "array_rand: <pre>";
    241     print_r(array_rand($arr,count($arr) - 1));
    242     echo "</pre><br/>";
    243 
    244     //array_reduce 用回调函数迭代将数组简化成单一的值
    245     $arr = array(1,2,3);
    246     function get_sum($v,$m){
    247         return $v + $m;
    248     }
    249     echo "array_reduce: <pre>";
    250     print_r(array_reduce($arr,'get_sum'));
    251     echo "</pre><br/>";
    252 
    253     //array_replace 函数使用后面数组元素的值替换第一个 array 数组的值。如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组,它将保持不变。如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。 
    254     $arr = array("orange","ping","juice","apple");
    255     $replacement = array('111' => '222');
    256     echo "array_replace: <pre>";
    257     print_r(array_replace($arr,$replacement));
    258     echo "</pre><br/>";
    259 
    260     //array_reverse 将数组进行翻转
    261     $arr = array("1" => 2,'2' => 'red');
    262     echo "array_reverse: <pre>";
    263     print_r(array_reverse($arr));
    264     echo "</pre><br/>";
    265 
    266     //array_search 查找值是否在数组中
    267     $arr = array('222' => '111');
    268     echo "array_search: <pre>";
    269     print_r(array_search('111',$arr,true));
    270     echo "</pre><br/>";
    271 
    272     //array_shift 将数组开头的单元移出数组,返回第一个元素
    273     $arr = array('a',2,3);
    274     echo "array_shift: <pre>";
    275     print_r(array_shift($arr));
    276     echo "</pre><br/>";
    277 
    278     //array_slice 从数组中提取一部分 array_slice($arr,$offset,$length[,bool $preserve_key]);   
    279     $inputs = array('a','b',4 => 'c','d');
    280     echo "array_slice: <pre>";
    281     print_r(array_slice($inputs,2,2,true));
    282     echo "</pre><br/>";
    283 
    284     //array_splice 用数组去代替原数组中的一部分 array_splice($inputs,$offsets[[,$length,],$resplacement])
    285     $input = array("red", "green", "blue", "yellow");
    286     array_splice($input, 1 , 2,'dsadsa');
    287     echo "array_splice: <pre>";
    288     print_r($input);
    289     echo "</pre><br/>";
    290 
    291     //array_unique 当且仅当 (string)value1 == (string)value2,保留第一个值
    292     $arr = array(1,2,3,'2','3');
    293     echo "array_unique: <pre>";
    294     var_dump(array_unique($arr));
    295     echo "</pre><br/>";
    296 
    297     //array_shift 在数组头加入一个或者多个单元
    298     $arr = array(2,3,4);
    299     $add = array(5,6);
    300     array_unshift($arr, $add);
    301     echo "array_unshift: <pre>";
    302     print_r($arr);
    303     echo "</pre><br/>";
    304 
    305     //array_walk 对数组中的每个成员应用用户函数
    306     function my_array_walk(&$v,$k,$str){
    307         $v = $v . $k . $str;
    308     }    
    309     $arr = array('red','black','blue','green');
    310     echo "array_walk: <pre>";
    311     array_walk($arr,'my_array_walk','sss');
    312     print_r($arr);
    313     echo "</pre><br/>";
    314 
    315     //array_walk_recursive 对数组中的每个成员应用用户函数
    316     function my_array_walk_recursive($v,$k){
    317         echo "$k holds $v<br/>";
    318     }
    319     $arr = array('red' => 1,'black' => 2);
    320     $bigarr = array('haha' => $arr,'pink' => 3);
    321     array_walk_recursive($bigarr, 'my_array_walk_recursive');
    322 
    323 ?>

    自己练习而已,不喜勿喷。

  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/zafuacm/p/4150707.html
Copyright © 2011-2022 走看看