365文库
登录
注册
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
醉场佳人笑 上传于:2024-05-21
PHP面试题及答案 http://www.murray.cn/index.php/2009/10/php-interview-answer Posted by murray10月 21, 2009 1,用PHP打印出前一天的时间,格式是2006-5-10 22:21:21 echo date("Y:m:d H:i:s",strtotime("-1 day")); ?> 2,echo(),print(),print_r()的区别 echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象 3,能够使HTML和PHP分离开使用的模板 smarty, PHPLib, FastTemplate, Savant,MiniTemplator,TagTemplate 4,如何实现PHP、JSP交互 $foo = new Java(’java.lang.System’); 5,使用哪些工具进行版本控制 CVS或SVN CVS Server on Apache作服务端,WinCVS作客户端 Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端 6,如何实现字符串翻转 $str=strrev("Wilson Peng"); echo $str; ?> 7,优化MYSQL数据库的方法 (1)选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如’省份,性别’,最好设置为ENUM (2)使用连接(JOIN)来代替子查询: (3)使用联合(UNION)来代替手动创建的临时表 (4)事务处理: 保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败 mysql_query(”BEGIN”); mysql_query(”INSERT INTO customerinfo (name) VALUES (’$name1′)”; mysql_query(”SELECT * FROM `orderinfo` where customerid=”.$id”); mysql_query(”COMMIT”); (5)锁定表,优化事务处理: 我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,不会有其它的访问来对 inventory 进行插入、更新或者删除的操作 mysql_query(”LOCK TABLE customerinfo READ, orderinfo WRITE”); mysql_query(”SELECT customerid FROM `customerinfo` where id=”.$id); mysql_query(”UPDATE `orderinfo` SET ordertitle=’$title’ where customerid=”.$id); mysql_query(”UNLOCK TABLES”); (6)使用外键,优化锁定表 (7)建立索引: (8)优化查询语句 最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作 SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢) SELECT * FROM order WHERE orderDate<"2008-01-01";(快) SELECT * FROM order WHERE addtime/7<24;(慢) SELECT * FROM order WHERE addtime<24*7;(快) SELECT * FROM order WHERE title like "%good%"; SELECT * FROM order WHERE title>=”good” and name<"good"; 8,实现中文字串截取无乱码的方法 $str = '我是一串比较长的中'; echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8'); echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8'); ?> mb_substr:我是一串比较 mb_strcut:我是 mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象 9,用PHP写出显示客户端IP与服务器IP的代码 echo $_SERVER[‘REMOTE_ADDR’]; getenv('REMOTE_ADDR'); //客户端IP $ip=gethostbyname ("www.murray.cn"); //服务器IP echo $ip; ?> 10,在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量中;而链接到当前页面的URL记录在预定义变量中 echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 11, $null = NULL; $bool = FALSE; $notSet; $array = array(); //以下是问题 $a = "hello"; $b = &$a; unset($b); //答案为:hello echo $a; $b = "world"; //答案为:hello echo $a; //以下是问题 $a = 1; $x = &$a; $b = $a++; //答案为:1 echo $b; //以下是问题 $x = empty($array); //答案为:1 echo $x; //答案为:true echo $x?"true":"false"; ?> 12,表单中 get与post提交方法的区别 get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息 13,session与cookie的区别 session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。 两者都可通过时间来设置时间长短 14,数据库中的事务是什么 事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消 15,MYSQL取得当前时间的函数是 now() 格式化日期的函数是 date() 16,语句include和require的区别是什么 require->require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require include->include有返回值,而require没有(可能因为如此require的速度比include快) 17,如何修改SESSION的生存时间 将php.ini中的session.gc_maxlifetime设置为9999重启apache 或:$savePath = “./session_save_dir/”; $lifeTime = 小时
tj