zoukankan      html  css  js  c++  java
  • php 常见面试题(3)

    1、数组$a = array('a'=>'a','b'=>'b','c'=>'c'),如何将array(‘d’=>'d')快速插入 a 和 b 之间?

    function wpjam_array_push($array, $data=null, $key=false){
        $data  = (array)$data;
     
        $offset  = ($key===false)?false:array_search($key, array_keys($array));
        $offset  = ($offset)?$offset:false;
        if($offset){
            return array_merge(
                array_slice($array, 0, $offset),
                $data,
                array_slice($array, $offset)
            );
        }else{  // 没指定 $key 或者找不到,就直接加到末尾
            return array_merge($array, $data);
        }
    }
    
    $data = array("d"=>'d');
    $b = wpjam_array_push($a,$data,"b");
    print_r($b);

    2、写一个遍历目录下所有文件以及子目录的函数

    function my_scandir($dir)  
    {  
        $files = array();  
        if ( $handle = opendir($dir) ) { 
            while ( ($file = readdir($handle)) !== false ) {  
                if ( $file != ".." && $file != "." ) {  
                    if ( is_dir($dir . "/" . $file) ) {  
                        $files[$file] = scandir($dir . "/" . $file);  
                    }else {  
                        $files[] = $file;  
                    }  
                }  
            }  
            closedir($handle);  
            return $files;  
        }  
    }
    
    $files=my_scandir('E:PhpStudyWWW12_twleve_month8-2');
    echo "<pre>";
    print_r($files); 

    3、用php实现一个双向队列。

      队列是一种线性表,按照先进先出的原则进行

      单向队列:只能从头进,从尾出

      双向队列:头尾都可以进出

    class DuiLie {
    
        private $array = array();//声明空数组
     
        public function setFirst($item){
    
            return array_unshift($this->array,$item);//头入列
        }
    
        public function delFirst(){
    
            return array_shift($this->array);//头出列
        }
     
        public function setLast($item){ 
    
            return array_push($this->array,$item);//尾入列
        }
    
        public function delLast(){
    
            return array_pop($this->array,$item);//尾出列
        }
    
        public function show(){
    
            var_dump($this->array);//打印数组
        }
    
        public function Del(){
    
            unset($this->array);//清空数组
        }
    }   

     4、$arr = [
          ['name' => '张三', 'phone' => '123456', 'reg_time' => '2015-12-25'],
          ['name' => '李四', 'phone' => '345698', 'reg_time' => '2015-12-26'],
          ['name' => '张三', 'phone' => '123456', 'reg_time' => '2015-12-27'],
          ['name' => '张三', 'phone' => '12345678', 'reg_time' => '2015-12-28'],
          ['name' => '小王', 'phone' => '345698', 'reg_time' => '2015-12-26']
      ];  

    根据 name + phone 去重,只保留一条

    /*针对任意键值来进行去重*/  
    function getArrayUniqueByKeys($arr)  
    {  
        $arr_out =array();  
        foreach($arr as $k => $v)  
        {  
            $key_out = $v['name']."-".$v['phone'];     //提取内部一维数组的key(name age)作为外部数组的键  
            if(array_key_exists($key_out,$arr_out)){  
                continue;  
            }  
            else{  
                 $arr_out[$key_out] = $arr[$k];     //以key_out作为外部数组的键  
                 $arr_wish[$k] = $arr[$k];          //实现二维数组唯一性  
            }  
        }  
        return $arr_wish;  
    } 
    
    $arr_wish = getArrayUniqueByKeys($arr);  
    echo "<pre>";
    print_r($arr_wish);  

     5、设计一个简单的单例模式

  • 相关阅读:
    JAVA :: MVC
    顺序栈创建
    editplus 配置工具集
    链表之创建
    13.1.22:线性表之单链表
    Web 多线程作业
    给 Mac OS X Lion 刻一张安装光盘
    kubernetes组件之api 安装
    kubeadm 之k8s 多master 部署
    kubernetes集群之部署kubescheduler组件
  • 原文地址:https://www.cnblogs.com/lpblogs/p/7452342.html
Copyright © 2011-2022 走看看