简介
介绍部分php7的新增特性和define和const的差别
标量类型声明
function sumOfArgs(string ...$args)
{
return array_sum($args);
}
var_dump(sumOfArgs(2, '3', 4.1));
//int 类型返回的是9
//string 类型返回的是9.1
结果如下:
返回值类型声明
function testReturnType(string ...$args): string
{
return array_sum($args);
}
var_dump(testReturnType(2, '3', 4.1));
//接受参数是字符型,返回指定字符型"9.1"
//接受参数是字符型,返回指定整型 9
null合并运算符,简化了使用三元运算符计算null
$username = $_GET['user'] ?? 'nobody';
var_dump($username);
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
var_dump($username);
太空船操作符,分别从整形,浮点型,字符串去对比
echo 1<=> 0; //1
echo 1<=> 2; //-1
echo 1<=> 1; //0
echo 5.5<=> 5.1; //1
echo 5.5<=> 5.8; //-1
echo 5.5<=> 5.5; //0
echo "1"<=> "0"; //1
echo "1"<=> "2"; //-1
echo "5.5"<=> "5.5"; //0
define 支持存数组了,php.56中是不支持的
define('TEST_DEF', ['zp', 'xb']);
var_dump(TEST_DEF);
结果如下
因为平时懂const比较多,简单介绍一下区别
-
define 在代码编译时就定义的一个常量,而const是一个放到数据内存中的常量
-
define 可以定义在随意的地方,而const是只能定义在代码头部
-
define 可以使用表达式定义,而const只能是直白的文本
-
define 可以通过第三个参数设定大小写不敏感,而const不能
增加一下结论代码
if (1) {
const TEST_CON = 11;
define("TEST_DEF", 22);
var_dump(TEST_CON);
var_dump(TEST_DEF);
}
$a = 'a';
define("TEST_DEF" . $a, 22);
const TEST_CON . $a = 11;
define('TESTDEF', 22, true);
const TESTCON = 11;
var_dump(TESTDEF);
var_dump(testdef);
var_dump(TESTCON);
var_dump(testcon);
结果如图: