首先来看这些习题:
一、基础题
1. 写出如下程序的输出结果
<?
$str1 = null;
$str2 = false;
echo $str1==$str2 ? '相等' : '不相等';
$str3 = '';
$str4 = 0;
echo $str3==$str4 ? '相等' : '不相等';
$str5 = 0;
$str6 = '0';
echo $str5===$str6 ? '相等' : '不相等';
?>
2. 写出如下程序的输出结果
<?
$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = '';
$a5 = '0';
$a6 = 'null';
$a7 = array();
$a8 = array(array());
echo empty($a1) ? 'true' : 'false';
echo empty($a2) ? 'true' : 'false';
echo empty($a3) ? 'true' : 'false';
echo empty($a4) ? 'true' : 'false';
echo empty($a5) ? 'true' : 'false';
echo empty($a6) ? 'true' : 'false';
echo empty($a7) ? 'true' : 'false';
echo empty($a8) ? 'true' : 'false';
?>
答案: 只有 6 8 返回false 其他都是true
<?
$test = 'aaaaaa';
$abc = & $test;
unset($test);
echo $abc;
?>
答案: aaaaaa
分析:在php中&地址符号引用 其实是引用的对象副本 当unset之后 并没有删除副本 所以仍然是aaaaaa
4. 写出如下程序的输出结果
static $count = 0;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();
?>
答案:501
分析:首先思考全局变量 对全局变量操作不影响局部变量 所以第一次输出是5 当++之后 数值变为6 函数内部是静态局部变量 静态变量由于常驻内存 所以用完不会被释放 所以两次调用结果为 0 1
一、基础题
1. 写出如下程序的输出结果
<?
$str1 = null;
$str2 = false;
echo $str1==$str2 ? '相等' : '不相等';
$str3 = '';
$str4 = 0;
echo $str3==$str4 ? '相等' : '不相等';
$str5 = 0;
$str6 = '0';
echo $str5===$str6 ? '相等' : '不相等';
?>
答案: 相等 相等 不想等
分析:在php中基础类型像 null,false,'',0,""等被php处理后他们的值是相等的,如果empty函数判断这些 也都是true 第三个由于是对类型也进行了判断 所以不相等
2. 写出如下程序的输出结果
<?
$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = '';
$a5 = '0';
$a6 = 'null';
$a7 = array();
$a8 = array(array());
echo empty($a1) ? 'true' : 'false';
echo empty($a2) ? 'true' : 'false';
echo empty($a3) ? 'true' : 'false';
echo empty($a4) ? 'true' : 'false';
echo empty($a5) ? 'true' : 'false';
echo empty($a6) ? 'true' : 'false';
echo empty($a7) ? 'true' : 'false';
echo empty($a8) ? 'true' : 'false';
?>
答案: 只有 6 8 返回false 其他都是true
分析:在php中基础类型像 null,false,'',0,"",'0'等被php处理后他们的值是相等的,如果empty函数判断这些 也都是true 6由于是一个null字符串 8是一个含有一个子元素的数组
<?
$test = 'aaaaaa';
$abc = & $test;
unset($test);
echo $abc;
?>
答案: aaaaaa
分析:在php中&地址符号引用 其实是引用的对象副本 当unset之后 并没有删除副本 所以仍然是aaaaaa
4. 写出如下程序的输出结果
<?
$count = 5;
function get_count(){static $count = 0;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();
?>
答案:501
分析:首先思考全局变量 对全局变量操作不影响局部变量 所以第一次输出是5 当++之后 数值变为6 函数内部是静态局部变量 静态变量由于常驻内存 所以用完不会被释放 所以两次调用结果为 0 1