PHP入门-3

1.数组函数:

    //大多返回一个数组,键有可能变化,也可能不变。查手册

    (1).键值操作:
        array_values();          //提取value
        array_keys();            //提取key

        in_array();               //value存在?
        array_key_exists();       //key存在?

        array_filps();            //键值翻转
        array_reverse();          //元素(整个键值对)翻转

    (2).统计数组元素和键的唯一性:
        count();   //元素个数
        array_count_values();     //统计所有元素,每个元素出现的次数,以值为键形成新数组.
        array_unique();           //提取所有的值(去重)形成新数组。

    (3).利用回调函数操作数组:
        array_filter($arr, "fun")  //写好fun函数,即可取得想要的某些元素。(有过滤功能)
                                   //没有fun,就默认抛出不为空的所有元素(直接剔除为空的$val)

        array_map("fun", $arr)             //对这个$arr的所有$val进行fun的操作。
                 ("fun", $arr1, $arr2)     //只要$arr1和$arr2元素个数相同,可以执行多个fun的作用。

        ( 老师讲了一个面试题:$val+1,但是不让产生新数组(就是不允许你返回数组),
          所以用global或者&$arr。
          这个原因就是全局变量和局部变量在捣鬼,
          所以如果遇到某些函数需要带&,需要注意,它可能就是通过函数的局部变量
          来改变全局变量。
        )

        //:输入引用型参数

        $arr = array('user1'=>1, 'user2'=>2, 'user3'=>3);   
        function add(&$arr){
           foreach($arr as $val){
              $val++;
           }
        }

        add($arr);        //如果传入的不是&$arr ,这里不可能改变arr数组,因为函数内部的$arr和外面的$arr完全没关系啊。

        这类函数:array_pop(); array_push();


    (4).排序:
        //.基于value排序
        sort()    //不带键的升序
        rsort()   //不带键的倒序
        asort()   //带键的升序
        arsort()  //带键的倒序

        ksort()   //基于键的升序
        Krsort()  //...

        natsort()       //处理某些字符串是数字和字母的混合体,实现 “数字这部分” 依据自然数的顺序 升序。
        natcasesort()   //对字母忽略大小写

        array_multisort();    //两个数组(或多个数组)如果存在对应关系,则可以依据某个数组的排序对另一个数组排序。

        //新浪面试题:

	          $arr = array('aaa', 'bbbbbbbbbbb', 'ccccccc', 'dd');
	          要求:(1)按标题长度排序
	                (2)标题长度变成标题的key
	           
	          1-->去标题长度的数组:
	              foreach($arr as $key=>$val){
	                 $len[]=strlen($val);
	              }

	          2-->启动array_multisort():
	              array_multisort($len, SORT_ASC, $arr);
	              //这里一定要print_r($arr),以便做下一步(结果发现key被干掉了,所以现在来加key)
	              //写代码写一步看下效果,再走下一步。

              //通过print_r($len)和($arr),发现如果要给$arr加上key,不如把$len升个序,然后合并$len和$arr,

	          3-->升序$len, 然后合并两数组,返回新数组$arr2.

	          sort($len);
	          $arr2 = array_combine($len, $arr);    //combine效果就是形成 $val=>$val2 的新数组。

    (5).数组的拆分,合并 ; 截取; 合并:

       explode
       implode/join

       array_slice();
       array_splice();
        
        array_merge();      //小心下标相同,造成覆盖(最后一个下标肯定只有一个$value);
                              这个形成数组是这样:$key1=>$val1 $key2=>$val2 ........

        array_combine();    //这个是形成新数组 $val1=>$val2

        array_intersect();  //交集
        array_diff();       //差集,($a, $b)和($b, $a)是不同的,后面的才是参照物。




    (6).数据结构:
        array_pop();
        array_push();

        
    (7).
posted @ 2018-03-19 20:29  hzhang_NJU  阅读(107)  评论(0编辑  收藏  举报