关于php基础类型的一些探讨

来源:互联网 发布:java获取局域网所有ip 编辑:程序博客网 时间:2024/05/19 18:45
首先来看这些习题:
一、基础题

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是一个含有一个子元素的数组


3. 写出如下程序的输出结果
<?
$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


原创粉丝点击