初学PHP day2

相等与恒等

简单来说,相等不考虑数据类型,恒等考虑。

另外,在数组中,变量名要一样,顺序要一致,这样才能相等。如果没有自定义变量名,那么默认变量名就是0,1,2,3…

<?php
$x = array("a" => "1", "b" => "2"); 
$y = array("a" => 1, "b" => 2); 
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>

运行结果:

array(2) {
  ["a"]=>
  string(1) "1"
  ["b"]=>
  string(1) "2"
}
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)

$_GET['user']

说明:

通过 URL 参数传递给当前脚本的变量的数组

Example #1$_GET范例

 <?php          echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';     ?>

假设用户访问的是 http://example.com/?name=Hannes

以上例程的输出类似于:

Hello Hannes!

在 PHP7+ 版本多了一个 NULL 合并运算符 ??,实例如下:

<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>

另:自 PHP 5.3 起,可以省略三元运算符中间那部分(原来:(expr1) ? (expr2) : (expr3) )。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

运算符优先级

运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样(从高到低:&&,||,and,or)。
<?php
// 优先级: &&  >  =  >  and
// 优先级: ||  >  =  >  or
 
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c);          // 这里的 $c 为 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d);          //这里的 $d 就是 boolean 值 true 
?>

运行结果:

int(3)
bool(true)

单双引号

简单来说:双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符

如:

$foo = 2; 
echo "foo is $foo"; // 打印结果: foo is 2 
echo 'foo is $foo'; // 打印结果: foo is $foo 
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) 
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n 
$foo = 2; 
echo "foo is $foo"; // 打印结果: foo is 2 
echo 'foo is $foo'; // 打印结果: foo is $foo 
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) 
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n 

如上所示:在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\和插入单引号’)

这里有一个会经常遇到的问题:插入数据库的SQL语句是采用单引号来定义字符串的,如果要将一个含有单引号的字符串插入数据库,这个SQL语句就会出错。所以在SQL注入问题中要特别注意单双引号,转义符的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值