PHP字符串与整型比较大小,是否可以?会不会计算出差值? 答案:肯定的,因为PHP是弱类型语言。
背景:redis的string类型,存储时间戳,知道redis的string类型存储的value值是字符串型,取出来时肯定也是字符串型。
当前时间戳 - redis存储的时间戳 = 时间差 (用来比较游戏时长的合法性)
存储游戏开始时间:
<?php
header("Content-type:text/html;charset=utf-8");
/*
*Function :setex.php;
*author : 奔跑吧笨笨;
*date : 2018/5/18;
*Info :
*/
//实例化redis对象
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$time = time();
$key = 'test_data_type';
$failure_time = 30;
$res = $redis->setex($key,$failure_time,$time);
if($res){
echo "成功".PHP_EOL;
var_dump($res);die;
}else{
echo "失败".PHP_EOL;
var_dump($res);die;
}
检验游戏时间的合法性
<?php
header("Content-type:text/html;charset=utf-8");
/*
*Function :get.php;
*author :奔跑吧笨笨;
*date : 2018/5/18;
*Info :
*/
//实例化redis对象
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$key = 'test_data_type';
$data = $redis->get($key);
var_dump($data);
echo '开始时间:'.$data.PHP_EOL;
$time = time();
var_dump($time);
echo '当前时间:'.$time.PHP_EOL;
$val_time = $time - $data;
var_dump($val_time);
echo '时间差:'.$val_time.PHP_EOL;
数据类型的转换:
一、//实例化redis对象
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$key = 'test_data_type';
$data = (int)$redis->get($key); 添加(int) 进行类型的强制转换
var_dump($data);
echo '开始时间:'.$data.PHP_EOL;
二、函数 intval
$data = '666six';
$a = intval($data);
var_dump($a);die; int(666)
三、直观感受
$data = '666six';
$num = 555;
$c = $data - $num;
var_dump($c);
综上所述,PHP是弱类型语言,所以,字符串与整型值比较,字符串先转为整数然后比较,不必要担心值类型不一样,导致结果的错乱。
我为人人,人人为我;美美与共,天下大同;