php工程师面试问题

进修社 人气:2.08W

PHP开发工程师面试题分享

php工程师面试问题

1. 下列哪一句不能将'john'添加到数组$user? 答:BD

A. $user[] = 'john';

B. array_add($user, 'john');

C. array_push($user, 'john');

D. $user ||= 'john';

2. 比较sort(), asort(), ksort()三个函数的用法以及使用环境。

答:sort -- 将数组的值由a-z重排,并自动替换索引从0...结束

asort --- 此函数将数组的元素由a-z重新排列,且保持原先索引值和元素的对应关系,这个函数主要是用于

需要将数组的元素重新排列。这个函数比较常用。

ksort --- 此函数将数组依照索引值由a-z重新排列

例子:

对array('a'=>111, '9'=>"orange", 6=>2, "apple");排序。

sort则返回: Array ( [0] => apple [1] => orange [2] => 2 [3] => 111 )值由a-z重排,索引也变了。

asort则返回:Array ( [10] => apple [9] => orange [6] => 2 [a] => 111 )值由a-z重排,保持索引以应

ksort则返回: Array ( [a] => 111 [6] => 2 [9] => orange [10] => apple )索引值由a-z重新排列,保持索

引以应

3. 以下代码输出什么内容, 为何。

$num = 10;

function foo(){

$num = $num * 10;

}

foo();

echo $num;

答:

结果为10.因为foo()中的$num是访问不到函数外的变量的。要想访问加上global $num;结果就成100了。

4. 引用和普通变量的区别。

答:普通变量是开辟了一块新的存储空间,引用是直接指向其他的存储空间。

如:

$num = 10;

function foo($num){

$num = $num * 10;

}

foo($num);

echo $num;

调foo($num);函数时以变量传递,则返回10;

如果改成引用传递,返回100;

$num = 10;

function foo(&$num){

$num = $num * 10;

}

foo($num);

echo $num;

5. 加载类库的方法。

答:

function __autoload($class){

require_once("./lib/".$class.'');

}

6. foo()和@foo()的区别。

答:加上@符号会屏蔽报错提示。

如下:

$num = 10;

function foo(&$num){

$num = $num / 0;

}

foo($num);

echo $num;

大家都知道除数不能为0。如果加上@符号后就没有Warning: Division by zero

7. 你平时如何调试PHP代码。

答:用echo打出调试或用exit调试。再加上火狐浏览器调。

8. === 的作用是什么?举一个例子,使用 == 返回true,但是使用 === 返回false。

答:=== 的作用是比较变量的值还比较变量的类型。==只比较值。

如下:

$str = '111';

if($str==111){//如果改成===则返回"失败了";

echo "成功了";

}else{

echo "失败了";

}

9. 声明一个不含方法和属性的类。

答:class Db {}

10. 创建一个对象myclass的'实例。

答:$db = new myclass();

11. 从类的内部访问或者设置属性。

答:

class DB{

private $username; //用户名

private $userpwd; //密码

public function test(){

$this->username='root';//给变量赋值

self::test2();//相当于$this->test2();//调用本类test2方法

//parent::test2();这样的话就调用了父类的test2方法

}

public function test2(){

}

}