Bootstrap

【php基础入门】运算符、流程控制语句及单双引号区别和模块化编程的使用详解

字符串的单引号和双引号区别

字符串的插值

  1. 双引号中的字符串,更像一个模板
  2. 这个模板中除了字面量以外,还可以有变量和转义字符
  3. 模板中的需要给变量提供一个边界区分字面量{}
  4. 单引号的解析速度理论上比双引号快
<?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,"&nbsp;",$str2; //Hello World

$newStr = $str1,$str2;
echo $newStr; //提示语法错误因为 “,” 是echo语句特有的

$newStr = $str1."&nbsp;".$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>
;