• 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 ?>

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

  • 相关阅读:
    【算法研究】目标检测
    【Java学习笔记】Java中方法和成员变量的访问控制
    DevExpress XtraReports 入门一 创建 Hello World 报表
    整理点dropdownList的应用
    Developer Express 之 XtraReport报表预览控件PrintControl设置
    C#实现winform仿div+css半透明遮罩效果
    动态传递参数到DevExpress.XtraReports的小结 .
    Developer Express 之 XtraReport如何显示设计窗体,打开已设计过的报表
    Developer Express 之 XtraReport如何动态绑定数据
    c#判断右键菜单(ContextMenuStrip)是从哪个控件弹出来的方法
  • 原文地址:https://www.cnblogs.com/zafuacm/p/4150707.html
Copyright © 2020-2023  润新知