接上文:PHP面试编程题汇总(2)
21. 下面代码执行结果是
$array= array('1','1');
foreach($array as $k=>$v){
$v= 2;
}
print_r($array)
考察点:数组
输出结果:Array
(
[0] => 1
[1] => 1
)
- 下面代码执行结果正确的是
$x="display";
${$x.'_result'} ();
编译错误
- 下面代码的结果
$a = ['a','b','c'];
$b = ['a','b'];
$c = $a+$b;
print_r($c);
考察点:数组运算
输出结果:Array ( [0] => a [1] => b [2] => c )
- 下面代码的执行结果
echo 24%(-5)
考察点:运算符
输出结果: 4
- 下面代码的结果
$a = "hello";
$b = &$a;
unset($b);
$b = "world";
echo $a;
考察点:引用
输出结果:hello
$b,$a指向了一个地址。有一个删除,另一个则不会受影响
- 下面代码的结果:
$a = "hello";
$b = &$a;
$b = "world";
echo $a;
考察点:引用
输出结果: world
$b,$a指向了一个地址。 有一个更改,另一个也会更改
- 输出下面结果
$j = 5;
switch ($j) {
default:
echo "no result";
case 1:
echo "周一";
case 2:
echo "周二";
case 3:
echo "周三";
case 4:
echo "周四";
case 5:
echo "周五";
case 6:
case 7:
echo "周末";
考察点:switch
输出结果: 周五周末
5后面没有结束语,会一直往下执行
- 下面代码的结果
class A
{
private function a()
{
echo "a";
}
public function __call($name,$arguments)
{
echo "调用不存在的方法名是:".$name.'<br>参数是:';
print_r($arguments);
echo '<br>';
}
$ins=new A;
$ins->b([1,2,3]);
考察点:面向对象
输出结果:调用不存在的方法名是:b
参数是:Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )
__call方法在调用对象中不存在的方法时自动调用
__call方法有2个参数
- empty与isset()的区别
$a = null;
var_dump(isset($a)); // bool(false)
var_dump(empty($a));// bool(true)
$b = 0.0;var_dump(isset($c)); //bool(true)
var_dump(empty($c)); //bool(true)
$c = 0;
var_dump(isset($d)); //bool(true)
var_dump(empty($d));// bool(true)
$e = “0.0”;
var_dump(isset($e)); // bool(true)
var_dump(empty($e)); // bool(false)
- 求出下列相联值的个数
$array = [1,1,0,0,1,1,1];
foreach ($array as $k => $v) {
if ($tmp == 0) {
$tmp = $v;
continue;
}
if ($tmp == $v) {
$count++;
} else {
if(isset($a[$tmp])){
if ($a[$tmp] < $count) {
$a[$tmp] = $count;
}
} else {
$a[$tmp] = $count;
}
$tmp = $v;
$count = 1;
}
if (!isset($array[$k+1])) {
if(isset($a[$v])){
if ($a[$v] < $count) {
$a[$v] = $count;
}
} else {
$a[$v] = $count;
}
}
}
print_r($a);
Array ( [1] => 3 )