首页 > 公告栏 >

PHP面试易错六个小题目,最后一个大多会错,宜春健乐旗编程俱乐部整理

地道少儿编程,是合源信息专为宜春青少年提供的一种学习编程的体验团体。指导人员都是公司一线的技术人员,结合当今国际比较标准的学习方式,订制的一系列知识体系。

 
 
 
 
PHP新手易错1
 
 

<?php

class A{

    public $num = 100;

}

$a = new A();

$b = $a;

$a->num = 200;

echo $b->num;

 
上面输出结果是?
A

100

B

200

答案是 B

输出200,这是因为PHP的浅拷贝机制,对象的浅拷贝,只有使用关键字clone才是100,相当于完整复制数据,互不影响。

 
 
 
 
 
PHP新手易错2
 
 

<?php

$x = array("aaa","ttt","www","ttt","yyy","tttt");

$y = array_count_values($x);

echo $y["ttt"];

 

 
上面输出结果是?
A

2

B

3

答案是 A

array_count_values() 函数用于统计数组中所有值出现的次数。

本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

 

 
 
 
 
PHP新手易错3
 
 

<?php

echo 24%(-5);

 
上面输出结果是?
A

4

B

-4

 

答案是 A
array_unique() 函数用于移除数组中重复的值。如果两个或更多个数组值相同,只保留第一个值,其他的值被移除。

 

 

 
 
 
 
PHP新手易错4
 
 

<?php

$num1 = "1";

$num2 = "2";

echo $num1 + $num2;

 

 
上面输出结果是?
A

3

B

1+2

 

答案是A

 

 
 
 
 
PHP新手易错5
 
 

<?php

$arr = array(3,5,7,9);

echo $arr[3];

 
上面输出结果是?
A

7

B

9

 

答案是 B

数组是从0开始的,第一个对应的是0,3对应的是第四个。

 
 
 
 
PHP新手易错6
 
 

<?php

$a = ['a','b','c'];

$b = ['a','b'];

$c = $a+$b;

 
上面输出结果是?
A

{a,a,b,b,c}

B

{a,b,c}

 

答案是 B

1、两个数组相加:(+):是用第一个数组覆盖第二个数组中键名字相同的。数字索引和字符串索引(关联数组)都会被覆盖,而且数字索引的下标保留。

 

对于数组相加来说比较简单,无论是数组键还是字符键,键相同的时候:首先出现的键保留值,后面出现的丢弃,并且数字键会重新排序。

 

2、array_merge:是第二个数组覆盖第一个数组键名相同。数字索引会被保留(+会被直接覆盖掉),而且数字索引被重新排序。

 

对于array_merge也不难记,就是对于数字键来说,相同时候,不发生覆盖,最后数字键会重新排序。但是如果字符键相同时,后出现的覆盖先出现的(与数组相加相反)。