前段时间遇到几道好无聊的面试题,有点类似于脑筋急转弯的感觉。感觉出这几道题的人真是好无聊!
第一题
以下输出结果是什么?
$arr = array(0=>1,"aa"=>2, 3, 4);
foreach($arr as $key=>$val){
print($key == "aa" ? 5 : $val);
}
答案: 5534
分析:
这道题适及到数据类型自动转换, 0 == "aa"结果true。
我的评价:
php弱类型语言,不同的操作符和数据类型之前的转换,有时候会匪夷所思。而且规则一堆,今天记住了,过段时间就忘了。
另外在实际应用中,都是使用全等于===,谁那么无聊会用上题中的==来判断???,即使你很清楚知道转换的规则,你能保证100%不出错吗,===这么安全的未什么不用??
第二题
以下输出结果是什么?
$a = 3;
$b = 5;
if($a = 5 || $b = 7) {...
php5.5有三项的改变比较容易用上,现做以说明,分别是:迭代生成器yield, foreach, finally
yield
提供了一种更容易的方法来实现简单的对象迭代,但没有实现一个具有 Iterator 接口的类所带来的性能开销和复杂性
function nums(){
for($i = 1; $i <= 10; $i += 1) yield $i; } foreach (nums() as $value) { echo $value; }
foreach
php5.5增加了foreach对多维数组循环的功能, 加入了list()函数,请看示例
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)) {
echo "A: $a; B: $b\n";
}
//返回以下内容
A: 1; B: 2
A: 3; B: 4`&nb...
php5.3以来, 加入了命名空间, 闭包, traits, 短数组等优美,漂亮的新特性,使得php程序代码看起来越来越优雅和简单。
php5.6的改变仍然振奋人心,本文主要讲php5.6的新特性相关的三个点:运算符, 常量, 命名空间。
运算符
1. php5.6新增幂运算符
. 符号为 **, **=
printf("2 ** 1 == %d\n", 2 ** 1);
$a = 3; $a **= 3;
2. 新境...运算符
. 该运符有两种功能
一. 变长参数
function f($a, $b = null, ...$params) {
// $params 是一个包含了剩余参数的数组
}
二. 数组参数展开
function add($a, $b, $c) {
return $a + $b + $c;
}
$operators = [2, 3];
echo add(1, ...$operato...