目录
字符串的单引号和双引号区别
字符串的插值
- 双引号中的字符串,更像一个模板
- 这个模板中除了字面量以外,还可以有变量和转义字符
- 模板中的需要给变量提供一个边界区分字面量{}
- 单引号的解析速度理论上比双引号快
<?php
$name = "华硕电脑";
$price = 5199;
echo "品名:".$name."<br>价格:".$price."元<br>";
// \n 换行 \r 回车 \t tab \\ \$ \'
// 注意:单引号只能识别2个转义字符 \' , \\
// 单双引号区别:字符转移、变量解析、运行速度。
// 注意:这里的转义字符\n 在HTML中就是一个空格
// nl2br()他会在\n前面自动插入一个<br>
$template = nl2br("品名:{
$name}\n价格:{
$price}元<br>");
echo $template;
/*
品名:华硕电脑
价格:5199元
品名:华硕电脑
价格:5199元
*/
// 定界符-----------------------------
//Heredoc 方式声明字符串
$url = " http://zhang.com/0427/demo.php";
$str = <<< EOF
我的
url:{
$url}
EOF;
echo $str3; // http://zhang.com/0427/demo.php
// heredoc: 双引号字符串替代语法
// 比较适合输出大量的多行内部存在变量的html代码
echo <<< SHOW
<table border="1" width='200'>
<tr>
<th>品名</th>
<th>价格</th>
</tr>
<tr>
<td>{
$name}</td>
<td>{
$price}</td>
</tr>
</table>
SHOW;
// SHOW: 必须要写在第一列最开头顶格,必须要与起始的名称一致
// nowdoc:单引号替代语法
echo <<< 'EOF'
<table border="1" width='200'>
<tr>
<th>品名</th>
<th>价格</th>
</tr>
<tr>
<td>手机</td>
<td>1599</td>
</tr>
</table>
EOF;
// nowdoc:适合大段的多行的字符串字面量的输出
?>
总结:
- 在 PHP 代码中尽量用单引号;
- 字符串中包含变量的时候,使用双引号可以简化操作;
- 如果字符串比较复杂且包含变量时,将变量使用大括号包裹起来;
- 字符串中不需要加入变量或者转义字符时,尽量用单引号定义字符串。
- heredoc定界符开始标记后不能出现空格或多余的字符,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号。
PHP 运算符
运算符是指通过一个或多个表达式来产生另外一个值的某些符号,如“+”、“%”、“.”等都是运算符。
算数运算符
<?php
$a = 10;
$b = 2;
echo $a+$b; // 12 加
echo $a-$b; // 8 减
echo $a*$b; // 20 乘
echo $a/$b; // 5 除
echo $a%4; // 2 求余
echo -6%4; // -2
// 判断今年是否为闰年 (年份能被4整除,但不能被100整除,或者能被400整除)
$year = date("Y");
if($year%4==0&&$year%100!=0||$year%400==0){
echo "{
$year}年是闰年";
}else{
echo "{
$year}年是平年";
}
// 生成一定范围内的随机数 0~100
echo mt_rand()%101;
echo mt_rand(0,100);
// 自增自减运算符
$a = 10;
echo $a++,"---",$a; // 10---11 先返回输出完在自增
echo ++$a,"---",$a; // 12---12 先自增完在返回输出
// 自减同理
echo $a--,"---",$a; // 12---11
echo --$a,"---",$a; // 10---10
// 幂运算
printf("2的4次方=%d<br>",2**4); // 2的4次方=16
?>
字符运算符
<?php
// 英文的 . 和 , 来连接字符串
echo "a"."b"."c"; //abc
$str1 = "Hello";
$str2 = "World";
echo $str1," ",$str2; //Hello World
$newStr = $str1,$str2;
echo $newStr; //提示语法错误因为 “,” 是echo语句特有的
$newStr = $str1." ".$str2;
echo $newStr; //Hello World
?>
关系运算符
<?php
$a = 10;
$b = 3;
var_dump($a>$b); // bool(true)
var_dump($a=2); // int(2) = 赋值,将等号右边赋值给左边
var_dump($a=="2"); // bool(true) == 值等于,类型不同会自动转换
var_dump($a==="2") // bool(false) === 全等于,必须类型和值完全相同
// strpos()查找指定字符串出现的位置
$str = "abcdefg";
$pos = strpos($str,'h');
// false 0 true 1
echo $pos===false? "未查找到指定字符!": "查找成功!";
?>
逻辑运算符
<?php
// x && y 与 如果 x 和 y 都为 true,则返回 true (&&===and)
var_dump(3>2&&5>1); // bool(true)
// 短路求值,第一个为假,第二个&&3>2永不执行
var_dump(2>3&&3>2); // bool(false)
var_dump(3>2&&2>3); // bool(false)
// x || y 或 如果 x 和 y 至少有一个为 true,则返回 true (||===or)
var_dump(3>2||2>