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 你也可以
使用
http://us.php.net/manual/en/ref.apd.php。
8.
“===” 是什么?试举一个“==”是真但“===”是假的例子。 “===”是给既可以送回布尔值