Home  >  Article  >  Backend Development  >  透过面试题目学习php之填空题

透过面试题目学习php之填空题

WBOY
WBOYOriginal
2016-06-13 12:02:491735browse

通过面试题目学习php之填空题

1、? 判断一个变量是否存在的函数:isset

判断一个变量是否为null的函数is_null

判断一个变量是否为空的函数empty

销毁一个变量的函数unset

2$a =array(1,2);unset($a[0]);print_r($a);echo count($a);请写出输出结果:

答:array(1=>2) ?; ?1

3$str = '2012/12/21';

echoereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\1/\\2/\\3",$str);

请写出输出结果'2012/12/21'

4$a = "aaa"; $b ="bbb";$c = "$a$b";$c = $a.$b;请问①和②谁执行的更快?

答:②

5打印一个用‘.’链接的字符串时候,还可以用什么代替‘.’链接效率更高些?

答:可以用‘,’代替‘.’。‘,’效率更高。

6函数strpos的原型为:int strpos(string haystack,stringneedle [,int offset])

用来从haystack中查找needle,如果找到返回needlehaystack的偏移,否则返回false。问:如何区分strpos返回false和返回0

答:采用绝对等于进行判断。==是不判断二者是否是同一数据类型,而===是更为严格的比较,它不但要求二者值相等,而且还要求它们的数据类型也相同。

7请列出您所知道的php模版对象

答:smarty,常见的还有PHPLib,FastTemplate,Savant

8请写出pHp脚本中执行SHELL命令的方法,要求至少写两种。

答:①string? exec(stringcommand[,array output[,int return_var]])它返回输出的最后一行,还可以通过可选参数outputexec指定的命令结束时的每一行输出。

??String? systemString command[,int return_var])直接将命令输出返回给调用者。

??void ?passthru(String command[,int returan_var])向调用者返回二进制输出。

??string ?shell_exec ( string $cmd )将字符串当做shell命令来执行,并返回所有输出。

??resource ?popen ( string $command , string $mode ) 打开一个指向进程的管道,该进程由派生指定的 command 命令执行而产生。

9请写出pHp变量序列化和反序列化的函数,并举出1个应用例子

答:serialize()/unserialize().

10WWW应用的pHp程序中,如何捕捉页面缓存的输出?

答:ob_start() ;打开缓存区,将已载入的内容加载到缓存区。
ob_get_contents();
获取缓存区内容,经典用法 $str=ob_get_contents();

Ob_clean();仅仅清空缓冲区中的内容;
ob_end_clean();
清除缓冲区中缓存内容,并关闭输出缓冲区。

ob_start() 函数出现后开始所有的输出内容将被缓存,不被输出,直到出现 ob_end_clean() 函数。ob_end_clean()以后输出内容不再被缓存而且把以前的缓存内容清空掉。所以为了使用刚刚缓存了的内容必须在ob_end_clean()函数出现之前使用 ob_get_contents() 函数提取已经缓存了的内容。

ob_clean()ob_end_clean()有什么区别呢?

ob_clean 只是清除缓冲区中的内容.ob_end_cleanob_clean多做一些事情.就是关闭缓冲区.

ob_flush();刷新缓存区,将缓冲区内容输出;

ob_get_length();返回缓冲区中缓存内容的长度。

ob_get_clean();获取当前缓冲区中的内容,并删除输出缓冲区。

11执行第一段代码,你觉得结果可能是多少?

???????? $a = array(1,2);

???????? $b = array(3,4);

???????? var_dump($a+$b);

再执行第二段代码,结果又是多少呢?

???????? $a = array(1,2);

???????? $b = array('2'=>3,'3'=>4);

???????? var_dump($a+$b);

答:第一段代码结果是array([0]=>1,[1]=>2);

???????? 第二段代码结果是 array([0]=>1,[1]=>2,[2]=>3,[3]=>4);

???????? 这是因为php对数组相加的处理是当$a+$b时,如果$b数组中有与$a数组中不同的键,则把$b不同的数组项附加到$a数组中,并返回这个数组.

???????? 你可能会想到既然有加,是不是会有减呢,很抱歉,减是不可以的,无法通过语法检查

12echo 3|4;请问输出:

答:7

13echo count('12asssss');

答:1

14PHP打印出前一天的时间格式是2006-5-10 22:21:21

答:echo date(‘Y-n-d H:i:s’, strtotime(‘-1 day’));

15使用哪些工具进行版本控制?

:cvs,svn,vss;

16、如何实现字符串翻转?

答:stringstrrev( string<em><span style="font-size: 12pt;"><span style="font-family: Consolas;">$string</span></span></em> )---php内置字符串反转函数。

function str_strrev($str)

{

??? $len=strlen($str);

??? $newstr = "";

??? for($i=$len;$i>=0;--$i)

??? {

?????? $newstr .= $str[$i];

??? }

??? return $newstr;

}

17MYSQL取得当前时间的函数是?,格式化日期的函数是

答:①curtime()/current_time()—返回当前时间

???????? curdate()/current_date()—返回当前日期

???????? now()—返回函数执行时的时间日期

???????? sysdate()—返回当时实时的时间。

uninx_timestamp()—返回当前时间日期的unix时间戳。

Date_format(date,format)—格式化日期的函数

18、用PHP写出显示客户端IP与服务器IP的代码?

答:function get_client_ip(){

??? if(getenv('HTTP_CLIENT_IP')){

??????? $client_ip = getenv('HTTP_CLIENT_IP');

??? } elseif(getenv('HTTP_X_FORWARDED_FOR')) {

??????? $client_ip = getenv('HTTP_X_FORWARDED_FOR');

??? } elseif(getenv('REMOTE_ADDR')) {

??????? $client_ip = getenv('REMOTE_ADDR');

??? } else {

??????? $client_ip = $_SERVER['REMOTE_ADDR'];

??? }

??? return $client_ip;

}

1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址
2.HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关
3.HTTP_CLIENT_IP:客户端的ip

PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址。但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

不过要注意,并不是每个代理服务器都能用$_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP

PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。不过要注意的事,并不是每个代理服务器都能用$_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP

服务器端IP相关的变量

1. $_SERVER["SERVER_NAME"],需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。(gethostbyname($_SERVER["SERVER_NAME"]);

2. $_SERVER["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.confBindAddress的设置值相关)。在客户端测试结果正确。

19、如何修改SESSION的生存时间

:①修改php.ini中的session.gc_maxlifetime(After this number of seconds, stored data willbe seen as 'garbage' and cleaned up by the garbage collection process.),然后重启apache(注意:即使设置了垃圾回收的有效时间,但是能够触发垃圾回收器还存在一定的概率。session.gc_probability = 1(启动垃圾回收进程的几率);session.gc_divisor = 1000(启动垃圾回收进程几率因子,当前为千分之几); Define the probability that the'garbage collection' process is started. on every session initialization. Theprobability is calculated by using gc_probability/gc_divisor, e.g. 1/100 meansthere is a 1% chance that the GC process starts on each request.每次请求触发垃圾回收进程的几率)

②通过string session_save_path([ string $path ] )设置存储session文件的路径session_set_cookie_params(ini$lifetime,…)设置session回话cookie的有关参数(主要是session的生存周期),并且仅仅对当前执行php脚本有效。因此,如果对其他脚本设置,需要在启动session_start前调用该函数。

③通过setcookie()函数设置存储session_id信息的cookie生存周期,来控制session的生存周期,如下:setcookie(session_name(),session_id(),time()+N)

20、有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?

:①采用file_get_contents:

$url =" http://www.phpres.com/index.html";

$contents= file_get_contents($url);

②采用curl

$url =" http://www.phpres.com/index.html";

$ch =curl_init();

$timeout= 5;

curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, $timeout);

//在需要用户检测的网页里需要增加下面两行

//curl_setopt($ch,CURLOPT_HTTPAUTH, CURLAUTH_ANY);

//curl_setopt($ch,CURLOPT_USERPWD, US_NAME.":".US_PWD);

$contents= curl_exec($ch);

curl_close($ch);

echo$contents;

③采用fopen->fread->fclose

$url =" http://www.phpres.com/index.html";

$handle =fopen ($url, "rb");

$contents= "";

do {

$data =fread($handle, 1024);

if(strlen($data) == 0) {

break;

}

$contents.= $data;

}while(true);

fclose($handle);

echo$contents;

21、在PHP中,heredoc是一种特殊的字符串,它的注意事项有?

答:①开始和结束标示符必须相同,且标示符必须完全由字母数字字符和下划线组成,而且不能以数字和下划线开头。

②开始标示符前面必须有三个左尖括号:

heredoc语法与双引号界定的字符串遵循相同的解析规则。即,变量和转义序列都将得到解析。唯一的区别是:此处的双引号不需要转义。

④结束符必须在一行的开始处,而且前面不能有空格或任何其他多余的字符。此外,开始和结束标示符后面的任何空格都会导致语法错误。

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

答:SELECT username FROM members GROUP BY id ORDER BY COUNT(id) DESC limit0,10;

23、在PHPerror_reporting这个函数有什么作用?

答:设置错误报告的级别。该参数可以是一个任意的表示二进制位字段的整数,或者常数名称。

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

答:/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/

25、简述如何得到当前执行脚本路径,包括所得到参数。

答:$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF].’?’.$_SERVER[QUERY_STRING];

26JS表单弹出对话框函数是?获得输入焦点函数是?

答:弹出对话框: alert(),prompt(),confirm()

获得输入焦点 focus()

27JS的转向函数是?怎么引入一个外部JS文件?

:window.location.href;

??

28foo()@foo()之间有什么区别?

答:foo();调用一个函数
@foo();调用一个函数,如果调用有错误,则忽略

29mysql_fetch_row() mysql_fetch_array之间有什么区别?

:mysql_fetch_row是从结果集取出1行数组,作为枚举

mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得

30GD库是做什么用的?

:gd库提供了一系列用来处理图片的功能,使用GD库可以处理图片,或者生成图片。在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

31、指出一些在PHP输入一段HTML代码的办法。

答:

32、下面的程序会输入是否?(1)

?  $num = 10;

?  function multiply(){

????????   $num = $num * 10;

?  }

?  multiply();

?  echo $num;

答:10

33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2)

?  表名 UserName Tel Content Date

?     张三 13333663366 大专毕业 2006-10-11

?     张三 13612312331 本科毕业 2006-10-15

?     张四 021-55665566 中专毕业 2006-10-15

?  请根据上面的题目完成代码:

答:$mysql_db=mysql_connect("local","root","pass");

?  @mysql_select_db("DB",$mysql_db);

???????? $query = mysql_query(“select * fromtable_name where username=’张三’”,$mysql_db);

???????? While($row =mysql_fetch_array($query)){

?????????????????? Print_r($row);

??????? }

34MySQ自增类型(通常为表ID字段)必需将其设为(?)字段

答:auto_increment

35、写出以下程序的输出结果 (1)

?  $b=201;

?  $c=40;

?  $a=$b>$c?4:5;

?  echo $a;

答:4

36、取得查询结果集总数的函数是?获取更新操作影响的总数量的函数是?

答:mysql_num_rows($result);mysql_affected_rows($result);

37$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值

答:echo $arr[0];

38、请将37题的数组的值用','号分隔并合并成字串输出

答:echo implode(“,”,$arr);

39$a = 'abcdef'; 请取出$a的值并打印出第一个字母

:echo $a[0] echo substr($a,0,1)

40、请写出PHP5权限控制修饰符

:public(公共),private(私用),protected(继承)

41、在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量____;而链接到当前页面的URL记录在预定义变量____中。

答:$_server[SCRIPT_NAME];$_server[HTTP_REFERER];

42、在HTTP 1.0中,状态码 401 的含义是_状态401代表未被授权___;如果返回“找不到文件”的提示,则可用 header 函数,其语句为_header(“HTTP/1.1404 Not Find”)___

答:①状态401代表未被授权_header(“HTTP/1.0 404 Not Found”);

43、数组函数 arsort 的作用是____;语句 error_reporting(2047)的作用是____

答:arsort()本函数对数组进行逆序排序,数组的索引保持和单元的关联

error_reporting(2047)的作用是:report All errors and warnings

44PEAR中的数据库连接字符串格式是____

: 一般来说,$dsn是一

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn