Heim  >  Artikel  >  Backend-Entwicklung  >  PHP面试题一[转]_PHP教程

PHP面试题一[转]_PHP教程

WBOY
WBOYOriginal
2016-07-20 11:14:23816Durchsuche

1.用PHP打印前一天的时间,格式如2012-4-12 10:11:22

echo date("<span Y-n-d H:i:s</span>",strtotime("<span -1 day</span>"));

format字符[a:am,pm小写,A:AM,PM大写  g小时,12时制 n月份 前无0]
strtotime()用法如下

<span <?</span>php
echo strtotime ("<span now</span>"), "<span \n</span>";
echo strtotime ("<span 10 September 2000</span>"), "<span \n</span>";
echo strtotime ("<span +1 day</span>"), "<span \n</span>";
echo strtotime ("<span +1 week</span>"), "<span \n</span>";
echo strtotime ("<span +1 week 2 days 4 hours 2 seconds</span>"), "<span \n</span>";
echo strtotime ("<span next Thursday</span>"), "<span \n</span>";
echo strtotime ("<span last Monday</span>"), "<span \n</span>";
<span ?></span> 

2.echo() print() print_f()区别

echo()是一个php语句,所以没有返回值,能打印简单的数据。
print()是一个函数,有返回值,能打印简单的数据。
print_r()是一个函数,能打印复杂的(mix)数据。

3.常见的PHP模板引擎

Smarty EasyTemplatePHP

4.哪些工具可以进行版本控制

SVN CVS

5.实现字符翻转的函数

strrev($str);

6.优化Mysql数据库的常用方法

(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率
(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master
(3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引
(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句
(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) ... where article_id = ? 就可以了,不要先select * ... where article_id = ?然后msql_num_rows.
只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update ... set title = ? where article_id = ?不要set content = ?(大文本)
(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度

7.用PHP获取客户端IP及服务器IP

客户端:$_SERVER[‘REMOTE_ADDR’]或getenv(‘REMOTE_ADDR’);

服务器:gethostbyname(“baidu.com”);

8.修改session的生存时间

<?php
session_start(); 
// 保存一天 
$lifeTime = 24 * 3600; 
setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
?>
9.写出发贴数最多的十个人名字的sql,利用下表:members(id,username,posts,pass,email)
SELECT username 
FROM members
GROUP BY id 
ORDER BY count(posts) DESC 
LIMIT 0 , 10
 
10.简述如何得到当前执行脚本路径,包括所得到参数。
echo $_SERVER['SCRIPT_FILENAME']."?".$_SERVER['QUERY_STRING'];
 
11.mysql_fetch_row() 和mysql_fetch_array之间有什么区别?<br>mysql_fetch_row() 从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。
 
12.判断以下输出
 $str1 = null;
 $str2 = false;
 echo $str1==$str2 ? '<span 相等</span>' : '<span 不相等</span>';  //相等
 $str3 = '<span </span>';
 $str4 = 0;
 echo $str3==$str4 ? '<span 相等</span>' : '<span 不相等</span>';  //相等
 $str5 = 0;
 $str6 = '<span 0</span>';
 echo $str5===$str6 ? '<span 相等</span>' : '<span 不相等</span>';  //不相等
 
13.写出以下结果
<span <?</span>php
 $test = '<span aaaaaa</span>';
 $abc = & $test;
 unset($test);
 echo $abc;  <span //aaaaaa</span>
 <span ?></span>
当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。

-----------未完待续-------------<br><br>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440291.htmlTechArticle1.用PHP打印前一天的时间,格式如2012-4-12 10:11:22 echo date(" ",strtotime(" ")); format字符[a:am,pm小写,A:AM,PM大写 g小时,12时制 n月份 前无0] strtoti...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn