PHP面试题汇总(一)

用php打印出前一天的时间,格式是2006-5-10 22:21:21
方法一,使用time函数:

<?php
date_default_timezone_set('Asia/Shanghai');
echo date("Y-m-d H:i:s",time()-24*60*60);

方法二,使用strtotime函数:

<?php
date_default_timezone_set('Asia/Shanghai');
echo date("Y-m-d H:i:s",strtotime("-1 day"));

echo(),print(),print_r(),var_dump()的区别

echo()
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。

print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印”\n”。因此用var_dump()函数更适合调试。

var_dump()
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

用php写出显示客户端ip与服务器ip的代码

<?php
echo "client ip:".$_SERVER['REMOTE_ADDR']."<br/>";
echo "server ip:".gethostbyname($_SERVER['SERVER_NAME']);

如何修改session的生存时间

<?php
session_start();
$lifetime = 24*3600;
setcookie(session_name(),session_id(),time()+$lifetime,"/");

谈谈你对MVC的认识

MVC (Model-View-Controller)模式,即模型-试图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分,具体的功能如下:模型(Model):业务逻辑层。实现具体的业务逻辑、状态管理的功能。视图(View):表示层。就是与用户实现交互的页面,通常实现数据的输入和输出功能。控制器(Controller):控制层。起到控制整个业务流程的作用,实现View层跟Model层的协同工作。

写出发贴数最多的十个人名字的sql,利用下表:members(id,username,posts,pass,email)

SELECT username FROM members ORDER BY posts DESC LIMIT 0,10;

优化MySQL数据库的方法

  1. 选择合适的存储引擎
  2. 在查询中筛选列创建索引,多个筛选列可以创建符合索引
  3. SQL语句的优化,减少在SQL语句中进行运算操作
  4. 分表分区,一张大表分成多张小表,一张表分配到不同的存储区域
  5. mysql系统配置,可增加并发连接数等

请写一个函数验证电子邮件的格式是否正确

<?php
function checkEmail($subject){
    $pattern = '/^\w+(\.\w+)*@\w+(\.\w+)+/';
    $res = preg_match($pattern, $subject);
    if($res){
        return true;
    }else{
        return false;
    }
}
echo checkEmail("[email protected]");

得到当前执行脚本路径,包括得到参数

$_SERVER['SCRIPT_FILENAME']表示页面文件路径
$_SERVER['QUERY_STRING']表示访问页面传入的URL字符串

<?php
if($_SERVER['QUERY_STRING']){
    $dir = $_SERVER['SCRIPT_FILENAME'].'?'.$_SERVER['QUERY_STRING'];
}else{
    $dir = $_SERVER['SCRIPT_FILENAME'];
}
echo "dir:".$dir."<hr/>";

得到当前访问页面的URL

$_SERVER['HTTP_HOST']表示主机地址
$_SERVER['REQUEST_URI']表示文件相对路径和查询字符串

$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo "url:".$url;

修改下面这段代码,使其正确运行。

<?php
$num = 10;
function multiply(){
    $num = $num * 10;
}
multiply();
echo $num;
//输出结果为10,并且还会报错

在php中,如果我们在某个函数里面想用外面的变量时,需要先使用global关键字声明这个变量为全局变量,然后才能使用。
因此可修改为:

<?php
$num = 10;
function multiply(){
    global $num;
    $num = $num * 10;
}
multiply();
echo $num;
//输出正确的结果100

SQL中char()和varchar()的区别

char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。

varchar()是不定长的,长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。

你可能感兴趣的:(PHP面试题汇总(一))