第三十六套

1.以下语句的输出结果是什么?

$a = 9;
echo "$a";//9
echo "
"
; echo '$a';//$a echo "
"
; echo "${a}";//9 echo "
"
; echo "\\\$a";//\$a echo "
"
; echo "$a"+"$a";//18 echo "
"
; echo "$a"."$a";//99

2.以下语句的输出结果是什么?

setcookie("key","value");
print $_COOKIE['key'];

value

3.$d是一个时间变量,求$d日期的上周一的日期(要求用date函数实现)

echo date('Y-m-d' , strtotime('last monday' , strtotime('2017-02-16')));

4.在类的方法中,如果调用其父类的同名方法?

parent::方法名();

5.”函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组”是在描述哪个函数?

array_map();

6.写出下列语句的输出结果:

echo 1+2+"6+3+1";//9

7.写出下列语句的输出结果:

$a = array(1=>8,7=>2,4=>19,2=>'8',33,5=>68);
echo $a[2];//8
echo $a[8];//33

8.写出下列代码结果:

echo 1>>0;//1
echo 2>>1;//1
echo 3<<2;//12

9.mysql中清空一个表并重置自增长id用什么命令?

truncate

10.mysql中如果要查询某个用户的权限需要查询哪个表?

user表

11.mysql客户端链接服务端时默认端口号是?

3306

12.”高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象.抽象不应该依赖于具体实现,具体实现应该依赖于抽象”这是在描述什么原则?

倒置原则

13.alert中用什么字符换行

\n

14.js中截取’abcdefg’中的bcd代码是什么?

var aaa='abcdefg';
var bbb=aaa.substring(1,4);
alert(bbb);

15.Linux中浏览目录的命令是?

ls dir

16.请编写一个方法,完成以下问题:在一个字符串中找到第一个只出现一次的字符.

如输入abaccdeff,则输出b.
百度上的都是java和c的代码.
下面是自己写的PHP代码

$str = 'abaccdeff';
$length = strlen($str);
$arr = str_split($str);
foreach ($arr as $k => $v) {
    $len = array_shift($arr);
    if(in_array($len,$arr)){
        array_push($arr,$len);
    }else{
        echo $len;
        exit;
    }
}

17.用PHP实现一个双向队列(即该队列在队首和队尾都可以进行插入和删除)

class Deque{  
    private $queue=array();  

    function addFirst($item){//头入队  
        return array_unshift($this->queue,$item);  
    }  
    function addLast($item){//尾入队  
        return array_push($this->queue,$item);  
    }  
    function removeFirst(){//头出队  
        return array_shift($this->queue);  
    }  
    function removeLast(){//尾出队  
        return array_pop($this->queue);  
    }  
    function show(){//显示  
        echo implode(" ",$this->queue);  
    }  
    function clear(){//清空  
        unset($this->queue);  
    }  
    function getFirst(){  
        return array_shift($this->queue);  
    }  
    function getLast(){  
        return array_pop($this->queue);  
    }  
    function getLength(){  
        return count($this->queue);  
    }  
}  
$q=new Deque();  
$q->addFirst(1);  
$q->addLast(5);  
$q->removeFirst();  
$q->removeLast();  
$q->addFirst(2);  
$q->addLast(4);  
$q->show();// 2 4

18.请编写一个方法,完成一下问题

问题:已知一个时间段,求该时间段内所有月份第一天的日期以及最后一天的日期,若某月某一天或最后一天不在该时间段内,则求该时间段的开始日期或结束日期.
已知参数:时间段的开始日期和结束日期.
返回要求:数组形式的日期列表,按月排序
示例:已知时间段的开始日期为2014年01月13日,结束日期为2014年05月19日,
则所求结果为:

[
['2014-01-13','2014-01-31'],
['2014-02-01','2014-02-28'],
['2014-03-01','2014-03-31'],
['2014-04-01','2014-04-30'],
['2014-05-01','2014-05-19']
]

自己写的代码如下:

//设置时区
date_default_timezone_set('PRC');
$arr = array();
$str1 = '2014-01-13';
$str2 = '2016-05-9';
//输出本月的最后一天
function getLastDay($str){
    return date('Y-m-d',strtotime(date('Y-m-01',strtotime($str)).'+1 month'.'-1 day'));
}
//输出本月的第一天
function getFirstDay($str){
    return date('Y-m-1',strtotime($str));
}

//给定日期返回第一天和最后一天组成的数组:$arr(firstday,lastday);
function getFL($str){
    $T = array();
    eval ('$T=['.'"'.getFirstDay($str).'"'.','.'"'.getLastDay($str).'"'.']'.";");
    return $T;
}
//获得结果
function getresult($str1,$str2){
    //开始日期的年
    $y1 = date('Y',strtotime($str1));
    //开始日期的月
    $m1 = date('m',strtotime($str1));
    //结束日期的年
    $y2 = date('Y',strtotime($str2));
    //结束日期的月
    $m2 = date('m',strtotime($str2));
    //时间段内的月份(不包括开始和结束的月份)----start
    //计算循环次数
    $m = (($y2-$y1)*12)+($m2-$m1-1);
    for ($i=1; $i <=$m; $i++) { 
        $n = floor(($i+$m1)/12);//计算所夸年的计数
        $y = $y1+$n;
        $x = ($i+$m1)%12;//计算月份
        $str3 = $y."-".$x;
        $arr[] =getFL($str3);
        //调用函数,返回数组(第一天,最后一天),把数组打入$arr数组中
    }
    //时间段内的月份(不包括开始和结束的月份)----end
    //把开始日期插入数组头部
    array_unshift($arr,array($str1,getLastDay($str1)));
    //把结束日期压入数组尾部
    array_push($arr,array(getFirstDay($str2),$str2));
    return $arr;
}
$arr =getresult($str1,$str2);
echo "
";
print_r($arr);

你可能感兴趣的:(PHP-面试题总集)