本节内容:
PHP isset()和empty
先看如下的判断语句:
在$switchType为空的情况下赋值为all,发现当$switchType为0的时候会发现$switchType也被赋值为all。
因此,可以认定php中0这个值在empty函数中会被作为空来判定,后来该为用isset就解决了此问题。
根据此问题,通过实际例子详细来解释下empty和issset两者的区域和用法。
一、empty和isset函数详解
1、empty函数
用途:检测变量是否为空
判断:如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。来源手册:http://php.net/manual/zh/function.empty.php
注意:empty() 只检测变量,检测任何非变量的东西都将导致解析错误。换句话说,后边的语句将不会起作用: empty(addslashes()($name))
2、isset函数
用途:检测变量是否设置
判断:检测变量是否设置,并且不是 NULL。如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
二、测试例子
<?php
/**
* isset和empty用法区别
* by www.
*/
function test($test_value) {
var_dump($test_value);
if (empty($test_value)) {
echo $test_value . " empty\n";
}
else {
echo $test_value . " not empty\n";
}
if (isset($test_value)) {
echo $test_value . " isset\n";
}
else {
echo $test_value . " not isset\n";
}
if ($test_value == "") {
echo $test_value . " the string empty\n";
}
else {
echo $test_value . " the string not empty\n";
}
}
$test_value = 0;
test($test_value);
echo "-----------------------\n";
$test_value = NULL;
test($test_value);
echo "-----------------------\n";
$test_value = "";
test($test_value);
echo "-----------------------\n";
$test_value = "\0";
test($test_value);
echo "-----------------------\n";
$test_value = array();
test($test_value);
echo "-----------------------\n";
$test_value = false;
test($test_value);
echo "-----------------------\n";
$test_value = true;
test($test_value);
echo "-----------------------\n";
?>
输出结果:
0 empty
0 isset
0 the string empty
-----------------------
NULL
empty
not isset
the string empty
-----------------------
string(0) ""
empty
isset
the string empty
-----------------------
string(1) ""
not empty
isset
the string not empty
-----------------------
array(0) {
}
Array empty
Array isset
Array the string not empty
-----------------------
bool(false)
empty
isset
the string empty
-----------------------
bool(true)
1 not empty
1 isset
1 the string not empty
-----------------------
三、二者的区别
1、isset值对于变量没有赋值或者赋值为NULL时判断false,其余都是true;
2、empty需要注意点比较多,要根据函数的定义来做判断
四、注意事项
empty在用于判断比对的时候要多注意,0若是用==会和""相等,此时可能需要用强制等于来判断===。
本节主要内容:
安装PHPUnit的方法
一,linux 下默认安装好,重装:
php go-pear.phar
二,win 系统
在命令行窗口中找到 PHP 的安装目录,运行 go-pear.bat 批处理文件即可。
如果当前 PHP 环境中没有 go-pear.bat 文件和 pear 目录
到 http://pear.php.net/go-pear.phar 处下载相应文件,放入自行建立的 pear 目录,
新建 go-pear.bat 文件,输入如下内容:
set PHP_BIN = php.exe
%PHP_BIN% -d output_buffering=0 PEAR\go-pear.phar
Pause
运行 go-pear.bat 按提示操作即可安装好 pear 包。
安装 pear 包后,输入如下命令即可安装 PHPUnit
pear install pear.PHPUnit.de/PHPUnit
输入 PHPUnit 有输出,即安装成功。
更详细的PHPUnit教程,请参考我们之前介绍过的文章:
PHPUnit教程(六)Fixture
PHPUnit教程(五)PHPUnit参数详解
PHPUnit教程(四)断言详解
PHPUnit教程(三)测试方法进阶
PHPUnit教程(二)PHPUnit基本用法
PHPUnit教程(一)PHPUnit介绍及安装
附1,PHPUnit使用指南之安装PHPUnit
PHPUnit可以通过PHP扩展和程序库(PEAE)获得。PEAR是可重用PHP组件的框架和分发系统。
安装PHPUnit可以通过PEAR安装程序命令获得:
根据PEAR的版本命名标准,适用于PHP5的PHPUnit包称为PHPUnit2。
PHPUnit是适用于PHP4的包。
安装只有,能够在本地的PEAR目录中找到PHPUnit的源代码,路径通常是/usr/lib/ php/PHPUnit2。
尽管使用PEAR安装程序是PHPUnit唯一支持的安装方法,但还是可以手工安装。
手工安装,请参照以下做法:
1.从http://pear.php.net/package/PHPUnit2/download下载PHPUnit发布包,然后解压缩,确保目录在php.ini定义的include_path中。
2.准备phpunit脚本
a. 将pear-phpunit脚本改名为phpunit
b. 将脚本中所有的@php_bin@改名为PHP命令行解释器所在的目录(通常为/usr/bin/ php)。
c. 将此脚本拷贝到一个PATH环境变量所包含的目录中,并将文件属性改为可执行(chmod +x phpunit)。
3. 将PHPUnit2/ Runner/Version.php脚本中的所有@package_version@字符串替换为你所安装的PHPUnit版本
附2, ubuntu系统中安装phpunit。
phpUnit 安装
1.Install php-pear
2.Update its own channel
3.Upgrade pear
4.install PHPUnit and it’s dependencies through PEAR.
$ sudo pear channel-discover components.ez.no
$ sudo pear channel-discover pear.symfony.com
$ sudo pear install --alldeps phpunit/PHPUnit
5.make sure it works
至此,在ubuntu系统中成功安装PHPUnit。
本节内容:
php时间函数strtotime
先来看下php官方手册中对strtotime的描述:
strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。
也就是说,此函数可以把2010-02-28 18:31:33转换为1267353093这种格式。
在做时间戳转换时,请注意服务器的date.timezone的配置。
在strtotime函数说明中有这么一段话:
该函数将使用 TZ 环境变量(如果有的话)来计算时间戳。自 PHP 5.1.0 起有更容易的方法来定义时区用于所有的日期/时间函数。
此过程在 date_default_timezone_get() 函数页面中有说明。
可以这么理解:
如果date.timezone配置为空或者为UTC(格林威治时间),那么它就会直接把传入的时间直接转换为该时间的UNIX时间戳(相当于该时间识别为格林威治时间)
如果date.timezone配置了时区,例如Asia/Shanghai,那么这个函数就会将传入的时间认为是配置的时区的当地时间,然后根据该时区与UTC(格林威治时间)的时差来算格林威治时间的时间戳。
例如:
php.ini配置date.timezone为Asia/Shanghai;
传入:2010-02-28 18:31:33
函数转出的时间戳的实际时间为:
2010-02-28 10:31:33
因为Asia/Shanghai位于 +8区,那么函数会自动减去了8个钟头的时间来得到格林威治时间。
分享一段测试代码,供大家参考。
例子:
echo '2010-02-28 00:00:00';
echo '<br>';
// 格林威治时间 0
date_default_timezone_set('UTC');
echo gmdate('Y-m-d H:i:s', strtotime('2010-02-28 00:00:00'));
echo '<br>'; // www.
// 中国上海时间 + 8
date_default_timezone_set('Asia/Shanghai');
echo gmdate('Y-m-d H:i:s', strtotime('2010-02-28 00:00:00'));
echo '<br>';
// 美国洛杉矶时间 - 8
date_default_timezone_set('America/Los_Angeles');
echo gmdate('Y-m-d H:i:s', strtotime('2010-02-28 00:00:00'));
echo '<br>';
输出结果:
2010-02-28 00:00:00
2010-02-27 16:00:00
2010-02-28 08:00:00
您可能感兴趣的文章:
php取得某段时间区间的时间戳的代码
php中的UNIX时间戳函数strtotime
php 时间戳函数总结与示例
php 当前时间、时间戳的获取方法汇总
php时间戳函数 strtotime 应用实例
php时间戳应用举例
php时间转换Unix时间戳的代码
php应用mktime获取时间戳的例子分析
学习php中时间戳和日期格式的转换