1、写出五种以上你使用过的PHP的扩展的名称(提示:常用的PHP扩展)
答:mysql、gd2、pdo、curl、mbstring、soap等,在php.ini中可以找到。尽量多了解一些扩展,了解他们的功能(能做什么)。php通过使用php_ming 库(Ming库)快速生成 Flash 动画 2、了解MVC模式吗?请写出三种以上目前PHP流行的MVC框架名称(不区分大小写)
答:MVC是Model(模型)、View(视觉)、Controll(控制器)的缩写。
MVC(Model-View-Controller)介绍
模型(Model): 应用程序的模型部分关心的是欲显示的数据的细节。模型通常关注的是应用程序的业务逻辑部分,关注的是如何使用数据库来读取和保存数据。
视图(View): 视图关心的是用户显示的部分,它通常是HTML。
控制器(Controller):控制器将特定的模型和视图结合起来,保证将正确的数据显示到页面上。
常用的MVC框架:
Zend Framework
FleaPHP
qeephp
CakePHP
ThinkPHP
CI
YII
大家有时间可以对框架进入多一些的深入了解。 3、用PHP打印出前一天的时间格式是2008-2-8 18:00:10
答:echo ‘昨天:’, date(‘Y-m-d H:i:s’, strtotime(‘-1 day’)), “<br />”; echo ‘昨天:’, date(‘Y-m-d H:i:s’, mktime (date(‘H’), date(‘i’), date(‘s’), date(“m”), date(“d”)-1, date(“Y”))), “<br />”; date(‘Y-m-d H:i:s’,Time () -24*3600) 参考strtotime.php mktime.php 4、echo(),print(),print_r()的区别 var_dump()
答:echo与print:
它们都不是真正的函数,是一种语法结构(也有说print是函数,echo不是)。
echo和print 后面都可不用加(),如: echo ‘ok’; print ‘ok’;
运行速度echo稍快一些,因为echo并不返回值,print返回一个值int(1)。
结论:
1、一般用echo,除非三元运算时。$a=5; ($a==5) ? print ’5′: print 0;
2、echo 后一般不要跟()。
print_r是递归打印,主要用于输出数组对象。 print只能有一个参数,所以不能不能用”,”,而echo可以。
Sprintf 以一定的格式 格式化一个字符串
参考 echo_print_print_r.php 6、如何实现字符串翻转?
答:可用内置函数strrev。如果不准用PHP内置函数的就自己写:
参考strrev2.php $STR = ‘abc’; $STR{0} Hello->olleH 7、$a = “hello”;
答:$b = &$a; unset($b); $b = “world”; what is $a?
参考references.php 此题的目的是要深刻理解引用。 通常,在将一个变量的值赋给另外一个变量的时候,先产生原变量的一个副本,然后再将它保存在内存的其他地方。如:
$a = 5; $b = $a;
首先产生$a的一个副本,然后再将它保存到$b中。如果随后改变$a的值,$b的值不会改变: $a = 7; //这时$b仍然是5
可以使用引用操作符&来避免这样的副本。如:
$a = 5;
$b = &$a;
$b = 7; //这时$a和$b都会是7。 这行也可以换成$b = 7;
引用是非常有趣的。请记住,引用就像一个别名,而不是一个指针。$a和$b都指向了内存的相同地址。可以通过重置它们来改变所指向的地址。如下所示:
unset($a);
重置并不会改变$b的值,但是只可以破坏$a和值7保存在内存中的连接。 http://www.php.net/manual/zh/language.references.unset.php 当 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如: <?php
$a = 1;
$b =& $a;
unset($a);
?>
不会 unset $b,只是 $a。 8、实现中文字串截取无乱码的方法。
答:a.可以用正则
b.用mb_substr()
参考mb_substr.php
北京abc substr 9、$a = 1;
答:$x = &$a;
$b = $a++;
what is $b? $x?
参考references2.php 10、$array = array();
答:$x = empty($array);
what is $x? true or false
参考 empty.php
什么样的内容为空?
empty()、isset()、is_null 11、用PHP写出显示客户端IP与服务器IP的代码
答:得到服务器端的IP:
//gethostbyname() 参考gethostbyname.php 有时候得不到。
$_SERVER['SERVER_ADDR'];
得到客户端的IP:
$_SERVER['REMOTE_ADDR'];
参考ip.php 12、某内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路,最好写出相关代码。
答:用户提交内容后,将内容加在最终页面模板上,然后另存为HTML页面(创建HTML页面,将内容和页面模板写入)。
代码:
$tpl->assign(‘vars’, $vars);
$static_html = = $tpl->fetch(‘tpl/index.html’); //Smarty的fetch方法
$fp = fopen(‘html/index.html’, ‘w’);
fwrite($fp, $static_html);
另一种 ob_start
createHtml.php 13、写出以下程序的输出结果
答:$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
参考3yuan.php 14、写出以下程序的输出结果
答:$str=”cd”;
$$str=”hotdog”; // $cd = ‘hotdog’
$$str.=”ok”;
echo $cd;
参考$$.php 15、在PHP中error_reporting这个函数有什么作用?
答:设定php脚本的错误报告级别
error_reporting(6143)的作用是设定php脚本的错误报告级别为”所有错误”。
ini_set(‘display_errors’, 1); //作用是在显示PHP脚本错误,相当于修改php.ini中的
error_reporting 定义和用法
error_reporting() 设置 PHP 的报错级别并返回当前级别。
语法
error_reporting(report_level)
如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:
值 常量 描述
1 E_ERROR Fatal run-time errors. Errors that can not be recovered from. Execution of the script is halted
2 E_WARNING Non-fatal run-time errors. Execution of the script is not halted
4 E_PARSE Compile-time parse errors. Parse errors should only be generated by the parser
8 E_NOTICE Run-time notices. The script found something that might be an error, but could also happen when running a script normally
16 E_CORE_ERROR Fatal errors at PHP startup. This is like an E_ERROR in the PHP core
32 E_CORE_WARNING Non-fatal errors at PHP startup. This is like an E_WARNING in the PHP core
64 E_COMPILE_ERROR Fatal compile-time errors. This is like an E_ERROR generated by the Zend Scripting Engine
128 E_COMPILE_WARNING Non-fatal compile-time errors. This is like an E_WARNING generated by the Zend Scripting Engine
256 E_USER_ERROR Fatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error()
512 E_USER_WARNING Non-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error()
1024 E_USER_NOTICE User-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error()
2048 E_STRICT Run-time notices. PHP suggest changes to your code to help interoperability and compatibility of the code
4096 E_RECOVERABLE_ERROR Catchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler())
8191 E_ALL All errors and warnings, except level E_STRICT (E_STRICT will be part of E_ALL as of PHP 6.0) 例子
任意数目的以上选项都可以用”或”来连接(用 OR 或 |),这样可以报告所有需要的各级别错误。例如,下面的代码关闭了用户自定义的错误和警告,执行了某些操作,然后恢复到原始的报错级别: <?php
//禁用错误报告
error_reporting(0);
//报告运行时错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//报告所有错误
error_reporting(E_ALL);
?> 17、有一个网页地址 http://bbs.91lamp.com/index.php ,如何得到它的html内容
答:file_get_contents()
数组函数 arsort 的作用是__。
对数组进行逆向排序并保持索引关系
/*
rsort — 对数组逆向排序
sort — 对数组排序
*/
参考arsort.php 18、执行程序段<?php echo 8%(-2) ?>将输出__0。
答:参考%.php 19、语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是__;为了避免多次包含同一文件,可以用语句__来代替它们。
答:发生异常时include产生警告,程序继续执行;require产生致命错误,程序停止往下执行。一般推荐使用require(更能调试错误)。
require_once()/include_once()
require重复调用会多次加载你引用的文件;require_once只加载一次,而不管你实际上调用了多少次,主要用于复杂的文件包含关系。
例如b包含a,c包含a,但同时c又包含了b,那么如果用require的话可能会导致两次加载a,这时应使用require_once。
实际开发过程中:如果确定某个文件只会被包含一次,那么用 require,否则用require_once。因为require不需要检测文件是否被包含过,比require_once 的执行效率要高。 20、一个函数的参数不能是对变量的引用,除非在php.ini中把__设为on。
答:allow_call_time_pass_reference
quote.php 21、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须__。
答:结束标识符所在的行不能包含任何其它字符除”;”
参考heredoc.php 22、有一数组 $a=array(3,2,4,9,8);请将其重新排序,按从小到大的顺序列出。
答:可用冒泡法进行排序:
冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后,此时第一趟结束,在最后的数必是所有数中的最大数。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
参考array1.php array2.php 23、写出session的运行机制。
答:session创建时,是否会在服务端记录一个cookie?cookie里面的内容是什么? session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识-称为sessionid,如果已包含一个sessionid则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,sessionid的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionid将被在本次响应中返回给客户端保存。 保存这个sessionid的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发给服务器。一般这个cookie的名字都是类似于SEEESIONID。 由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把sessionid传递回服务器。经常被使用的一种技术叫做URL重写,就是把sessionid直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://…../xxx;SEEESIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 另一种是作为查询字符串附加在URL后面,表现形式为http://…../xxx?SEEESIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个SEEESIONID。 参考:
session运行机制:理解session机制: http://bbs.91lamp.com/detail-526-1.html 抛开cookie使用session: http://www.91lamp.com/html/document/php/200808/16-1800.html cookie与session: http://www.91lamp.com/html/document/php/200808/16-1797.html 24、Cookie的原理及使用?
答:Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到服务器端。在Cookie生效之后及失效之前,客户每次发出页面请求的时候(包括PHP页面和静态html页面),都会把Cookie一块发送到服务器,只要我们针对它进行相应的处理,就可以实现变量”追随”。
cookie可以跨越子域名。
比如我们在xiaofeicn.com下面注册个个cookie,那么可以在bbs.xiaofeicn.com上读取到该cookie。
session不可以跨越子域名:
比如我们在xiaofeicn.com下面注册个个session,那么不可以在bbs.xiaofeicn.com,www.xiaofeicn.com上读取到该session。
a. 设置一个Cookie变量
设置一个Cookie变量,PHP使用的函数是: int setcookie(string name, string value, int expire,string path, string domain, int secure);
其中name是Cookie变量名称标识,你在PHP中将可以象使用普通变量名一样来用它引用Cookie变量。value是Cookie变量的初始值,expire 表示该Cookie变量的有效时间;path 为该Cookie变量的相关路径;domain 表示Cookie变量的网站;secure 则需在 https 的安全传输时才有效。 例如我们要设置一个变量username,它的值是字符串”bluewind”,我们可以这么写代码: setcookie (“username”,”bluewind”); //这两个参数是setcookie必要的。
我们还想给这个变量设置有效时间来限制操作超时等,比如说10分钟: setcookie (“username”,”bluewind”, 600000); //有效时间的单位是毫秒。
注意:setcookie和header函数一样,需要放在任何能向客户端输出的语句之前。 b. 销毁一个变量
销毁Cookie变量只要将它的value设为空(””)就可以了,如想销毁上面那个变量只要再写一次: setcookie (“username” ,””);
就可以了。这常用作安全退出之用。 c. Cookie的有效范围和生存期
Cookie的有效范围(也就是说在这个范围的页面都能得到这个Cookie变量)默认的是该目录及其子目录,当然你可以用setcookie的path和domain参数进行修改。如果你不对cookie的expire进行设置(参见1. 设置一个Cookie变量中的例子),那么当你离开网站的页面,cookie也同时得到自动销毁。 http://www.netscape.com/newsref/std/cookie_spec.html是 cookie 原创者 Netscape 所提供的完整介绍信息。 25、PHP的意思(英文全称、含义)
答:php是Hypertext Preprocessor的缩写,php是一种内嵌HTML的脚本语言。PHP的独特语法混合了c,java和perl及PHP式的新语法。这门语言的的目标是让网页开发人员快速的写出动态的网页。
Personal HomePage tools
Hypertext Preprocessor Hypertext Preprocessor … 26、foo()和@foo()之间有什么区别?
答:foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函数时,会隐藏所有上述的错误讯息。
很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。 27、如何声明一个名为”myclass”的没有方法和属性的类?
答:class myclass{} 28、如何实例化一个名为”myclass”的对象?
答:$myclass = new myclass; 29、你如何访问和设置一个类的属性?
答:$myclass->username = ‘andy’; 30、GD库是做什么用的?
答:GD 函式库用来做什么?
这个可能是我最喜欢的函式库,自从 PHP 4.3.0 版本后 GD 便内建在 PHP 系统中。这个函式库让你处理和显示各式格式的图档,它的另一个常见用途是制作所图档。GD 以外的另一个选择是 ImageMagick,但这个函式库并不内建于 PHP 之中,必须由系统管理员安装在伺服器上。
MagickWand
|