接上文:PHP面试编程题汇总(1)
11. 下面代码输出的是
$rest = substr("abcdef", -1);
$rest = substr("abcdef", 0, -1);
考察点:字符串函数
substr(字符串,开始位置,长度) 长度可省略
substr(“abcdef”, -1) 结果为 f
substr(“abcdef”, 0, -1) 结果 abcde
-2表示从末尾开始略去两个字符
define("x",5);
$x = x+10;
echo x;
考察点:define
define()定义常量 const也可以定义常量
echo x 不是$x 所以结果为5
var_dump(isset($a)) . "\n";
$a = 0;
var_dump(isset($a)) . "\n";
var_dump(is_null($a)) . "\n";
var_dump(empty($a));
考察点:变量
is_null() 检测变量是否为null,True为是,False为不是
所以结果依次为:bool(false) bool(true) bool(false) bool(true)
$a = 1;
$b = 2;
function sum(&$a, $b)
{
++$a;
$b++;
return $a + $b;
}
$c = sum($a, $b);
echo $a . ",";
echo $b . ",";
echo $c . "\n";
考察点:作用域
运行结果 2 2 5
sum()方法把$a传入,++$a 此时 $a=2 $a有引用&符号,变成了全局变量\
sum()方法把$b传入,$b++ 此时$b=3 是局部变量
$a = 1;
$b = 2;
function sum($a, $b)
{
++$a;
$b++;
return $a + $b;
}
$c = sum($a, $b);
echo $a . ",";
echo $b . ",";
echo $c . "\n";
考察点: 作用域
运行结果: 1 2 5
sum()方法把$a传入,++$a 此时 $a=2 是局部变量 \
sum()方法把$b传入,$b++ 此时 $b=3 是局部变量
$c=$a+$b = 2+3=5
所以运行结果为 1 2 5
$x=array(1,3,2,3,7,8,9,7,3);
$y=array_count_values($x);
echo $y[8];
考察点:函数 array_count_values
打印下,$y
Array(
[1] => 1
[3] => 3
[2] => 1
[7] => 2
[8] => 1
[9] => 1
)
class A{
public $num=100;
}
$a = new A();
$b = $a;
$a->num=200;
echo $b->num;
考察点:面向对象
打印$b print_r($b);
A Object
(
[num] => 100
) \
在PHP中,基本类型变量放在栈中,对象、数组放在堆中。
将$a 赋给$b,只是把对应的地址给了他,即$a、$b都存放了对象在堆中的地址,所以$b->num和$a->num访问的是同一份数据。
所以结果为200
echo(floor(0.60));
echo(floor(0.1+0.7)*10);
echo(floor(5.1));
echo(floor(-5.9))
考察点:函数
floor() 向下取整 floor(0.60)向下取整 0
floor(0.1+0.7) 向下取整也是0 0*10还是0
floor(5.1) 向下取整是5
floor(-5.9)向下取整是-6
class A{
public function __construct(){
echo "Class A...
";
}
}
class B extends A{
public function __construct(){
echo "Class B...
";
}
}
new B();
考察点:面向对象
B是子类。子类中定义了 构造函数 __construct 会覆盖父类的__construct。 如果没有定义__construct,则会使用父类的
所以结果为 Class B…
$var = FALSE;
if (empty($var)){
echo"null";
}else{
echo"have value";
}
输出结果:null
接下文 PHP面试编程题汇总(3)