background image

HR 面试 PHP 的集题库

1.以下哪一句不会把 John 新增到 users 阵列?  $users*+ = 

‘john’;   成功把 John 新增到阵列 

users。  array_add($users,

’john’);  函式 array_add() 无定义。  array_push($users,‘john’);   成功把 

John 新增到阵列 users。  $users ||= 

‘john’;  语法错误。   

2.2.sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?   sort()   根据阵列中
元素的值,以英文字母顺序排序,索引键会由

 0 到 n-1 重新编号。主要是当阵列索引键的值

无关疼痒时用来把阵列排序。

  assort()   PHP 没有 assort() 函式,所以可能是 asort() 的笔误。

 

asort()   与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保
留,特别适合替联想阵列排序。

  ksort()   根据阵列中索引键的值, 以英文字母顺序排序,

特别适合用于希望把索引键排序的联想阵列。

 

3.以下的代码会产生什么?为什么?   $num =10;   function multiply(){  $num =$num *10;  } 
multiply();  echo $num;    由 于函式 multiply() 没有指定 $num 为全域变量(例如 global $num 
或者

 $_GLOBALS['num']),所以 $num 的值是 10。

4. reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要
这样做?

   Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时 ,

整个应用都见到这个变量的新值。

   一个正规变量传送给函式的是它的值,当函式改变 这个

变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。

   $myVariable = 

“its’ value”;Myfunction(&$myVariable); // 以 reference 传送参数以 reference 传送参数给函式,
可以使函式改变了的变量,即使在函式结束后仍然保留新值。

 

5.些函式可以用来在现正执行的脚本中插入函式库?   对 这道题目不同的理解会有不同的
答 案 , 我 的 第 一 个 想 法 是 插 入

  PHP 

函 式 库 不 外 乎

 

include()、include_once() 、require() 、require_once() ,但细心再想,

“函式库”也应该包括 com 

物件和

 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,下次有人提起

“函式库”的时候,别忘记这两个函式。   

6.foo() 与 @foo() 有什么分别?   foo() 会执行这个函式,任何解译错误、语法错误、执行错误
都会在页面上显示出来。

  @foo() 在执行这个函式时,会隐藏所有上述的错误讯息。   很 多

应用程式都使用

 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这

是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。

   

7.你如何替 PHP 的应用程式侦错?   我并不常这样做,我曾经试过很多不同的侦错工具,

 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工

具。

   PHP 

– Advanced PHP Debugger 或称 PHP – APD,第一步是执行以下的指令安装: 

pear  install  apd 安 装 后 在 你 的 脚 本 的 开 头 位 置 加 入 以 下 的 语 句 开 始 进 行 侦 错 :

 

apd_set_pprof_trace();执行完毕,打开以下档案来 查阅执行日志:  apd.dumpdir   你也可以
使用

 pprofp 来格式化日志。   详细的资料可以参阅 

http://us.php.net/manual/en/ref.apd.php。

8.

“===” 是什么?试举一个“==”是真但“===”是假的例子。  “===”是给既可以送回布尔值