目录

  • 字符串的单引号和双引号区别
  • PHP 运算符
    • 算数运算符
    • 字符运算符
    • 关系运算符
    • 逻辑运算符
    • 赋值运算符
    • 错误抑制符
    • 三元运算符
  • 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~100echo mt_rand()%101;echo mt_rand(0,100);// 自增自减运算符$a = 10;echo $a++,"---",$a; // 10---11 先返回输出完在自增echo ++$a,"---",$a; // 12---12 先自增完在返回输出// 自减同理echo $a--,"---",$a; // 12---11echo --$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>3); // bool(true)
// ! x  非  如果 x 不为 true,则返回 true
var_dump(!(3>2)); // bool(false)$username = "admin";
if(isset($username)&&$username === "admin"){echo "欢迎管理员".$username;
}else{echo "请登录";
}
unset($username); // 退出登录
echo !empty($username)?"欢迎登录成功!":"请登录";
?>

赋值运算符

<?php
// x = y   x = y  左操作数被设置为右侧表达式的值
$a = 18;
// x += y  x = x + y  加
$a += 2; // $a = $a + 2;
// x -= y  x = x - y  减
$a -= 2; // $a = $a - 2;
// x *= y  x = x * y  乘
$a *= 2; // $a = $a * 2;
// x /= y  x = x / y  除
$a /= 2; // $a = $a / 2;
// x %= y  x = x % y  模(除法的余数)
$a %= 2; // $a = $a % 2;
// a .= b  a = a . b  连接两个字符串
$a .= 2; // $a = $a.2; $str = "zhang";
$str .= ".com"; // zhang.comob_clean();
$list = "<ul>";
for ($i=1; $i < 5; $i++) { $list .= sprintf("<li>item%d</li>",$i);
}
$list .= "</ul>";
echo $list;
/*
<ul><li>item1</li><li>item2</li><li>item3</li><li>item4</li>
</ul>*/
?>

错误抑制符

抑制错误输出,同过@符号加到会产生错误的表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

<?php
$var = 123;
@settype($var,"undefined"); // php 中没有undefined类型,不加上@肯定会报错
echo gettype($var);
echo var_export($var);
?>

三元运算符

<?php
// (expr1) ? (expr2) : (expr3)
// 如果exp1为真,执行?之后的exp2,否则执行:之后的exp3
$a = 12;
$b = 45;
$c = $a>$b?1:0;
echo '$c='.$c ;
// 检测页码 默认第一页
// $page = isset($_GET['page'])?$_GET['page']:1;
// $page = @$_GET['page']?$_GET['page']:1;
// null 合并运算符?  给null变量一个默认值
$page = $_GET['page']??1;
echo "当前是第".$page."页";// 太空舱运算符--------
$a = 15;
$b = 25;
// if($a>$b){//     echo 1;
// }elseif($a<$b){//     echo -1;
// }else{//     echo 0;
// }
// a<b -1 a>b 1 a=b 0
echo $a <=> $b;
?>

PHP 流程控制

PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;
详情请查看此处

分支语句

判断条件是否满足从而执行相应的语句代码

if else语句 单分支

<?php
// if(exp) 执行一句代码
if(exp){// 代码段;
}// if...else
if(exp){// exp为true时执行代码段;
}else{// exp为false时执行代码段;
}// if...elseif...else
if(exp1){// exp1为true时执行代码段;
}else if(exp2){// exp2为true时执行代码段;
}elseif(exp3){// exp3为true时执行代码段;
}else{// 以上exp都为false时会执行到此;
}// if嵌套的形式
if(exp){// 代码段;
}else{// 代码段;if(exp){if(exp){// 代码段;}else{// 代码段;}}
}// ------------------
// 模板语法:为了提高混合代码(HTML php)的整洁性
if(boolean):echo "string";
else:echo "string";
endif;<? if(true): ?><?= "<p>早上好</p>" ?>
<? else: ?><?= "<p>晚上好</p>" ?>
<? endif ?>?>

switch语句 多分支

<?php
switch(exp){case 值1:// 代码段;break;case 值2:// 代码段;break;...default:// 代码段;
}
// 当exp与case的值相同时,执行代码段
// 比对的时候是松散比对即 == 如 1(int) == "1"(str)$d = date("w");
switch ($d):case '1':echo "今天是星期一";break;case '2':echo "今天是星期二";break;case '3':echo "今天是星期三";break;case '4':echo "今天是星期四";break;case '5':echo "今天是星期五";break;default:echo "今天是周末啦!";break;
endswitch;
?>

循环语句

重复的事情或者有规律的事情要想到用循环

for循环语句

<?php
for(exp1;exp2;exp3){# code...
}
// exp1相当于初始化赋值,会无条件执行第一个表达式
// exp2在每次循环开始前求值,看exp2是否为true,如果为true执行循环体,否则for循环结束
// exp3做求值操作(增量或减量操作)
// true时执行顺序:exp1>-exp2>-代码段>-exp3>-exp2>-代码段>-exp3...for($i=1;$i<=10;$i++){echo $i."<br>";
}// 初始值;条件;步长
for ($i=1,$j=10; $i < $j ; $i++,$j--) { echo $i,"----",$j,"<br>";
}
/*
1----10
2----9
3----8
4----7
5----6*/
?>

while循环语句

<?php
while(exp){ // 循环体;
}$i = 1;
while ( $i<= 10) {echo $i."<br>";$i++;
}$cities = ['安徽','上海',"武汉","北京","南京","合肥"];
echo current($cities);
next($cities);
echo current($cities);
next($cities);
echo current($cities);
next($cities);
echo current($cities);
reset($cities);
echo current($cities);// current() 返回数组当前指针指向的值,到末端返回false
while ($i=current($cities)) {echo $i."<br>";next($cities); // 往下移动指针
}
var_export(current($cities)); // false 已移动到末尾
// 将数组的指针回位
reset($cities);?>

do…while循环语句

<?php
do{ 循环体;
}while(exp);
// 无条件的执行一次循环体,接着再来判断条件是否为true,为true的话继续执行循环体$i = 1;
do{echo $i."<br>";
}while ($i<=10)
?>$cities = ['安徽','上海',"武汉","北京","南京","合肥"];
$i = 0;
do{echo $cities[$i];$i++;
}while($i<count($cities));

goto (跳转指定)
跳转到指定位置
continue(结束本次)
代表跳过当次循环执行下次循环,可应用于for语句、while语句和do…while语句
break (终止循环)
可以通过break结束for语句、while语句和do…while语句死循环。

<?php
// continue 只是结束本次的循环程序,继续下一次
// 只输出十以内的偶数
for ($i=1; $i < 10; $i++) { if($i%2!=0){continue;}echo $i."<br>";
}// 看下面这个条件显然是一个死循环
$i = 0;
while (true) {// 当$i变量的值大于4的时候,我们就终止循环if($i>4){break;}echo $i."<br>";$i++;
}
?>

流程控制语句练习:

<?php// 输出100以内能被3整除的所有整数for ($i=0; $i < 100; $i++) { if($i%3==0){echo $i."<br>"; }}while ( $i < 100) {echo $i."<br>";$i += 3;}// 输出100以内的偶数每行5个for ($i=1,$j=0;$i <= 100 ; $i++) { if($i%2==0){echo $i."  ";$j++;if($j%5==0){echo "<br>";}}}// 已知有一百多人,每排三个剩1人,每排三人剩2人,每排五人剩3人,求可能是一百几十人?for ($i=100; $i < 200; $i++) { if($i%3==1&&$i%4==2&&$i%5==3){echo $i."<br>";}}// 猴子搬香蕉 for ($i=1,$x=100; $i <= 50; $i++) { if($x>50){$x -= 3;}elseif($x<=50){$x--;}printf("当走到%d米时,所剩香蕉%d根<br>",$i,$x);}// 水仙花数for ($i=1; $i < 9 ; $i++) { for ($j=0; $j < 9 ; $j++) { for ($k=0; $k < 9; $k++) { if($i**3+$j**3+$k**3==$i*100+$j*10+$k){echo ($i*100+$j*10+$k)."<br>";}}}}// 白鸡白钱for ($i=1; $i <= 18 ; $i++) { for ($j=1; $j <= 31 ; $j++) { $k = 100-$i-$j;if($i*5+$j*3+$k/3==100){printf("公鸡%d,母鸡%d,小鸡%d<br>",$i,$j,$k);}}}// 九九乘法表for ($i=1; $i <= 9; $i++) { for ($j=1; $j <= $i ; $j++) { printf("%d*%d=%d &nbsp;",$j,$i,$i*$j);}echo "<br>";}
?>

模块化编程

include和require引入外部文件的区别?

User.php

class User{public $name;public function __construct($name){$this->name = $name;}
}
$obj = new User('zhang');

Product.php (include)

include __DIR__.'./User.php';
echo $obj->name;
// 注意:include 引入的文件,一旦出错,脚本还会继续执行
echo "脚本继续运行"; // 脚本继续运行

Product.php 推荐(require)

// include __DIR__.'./User.php';
// 多次引入的话会报错,类不能重复定义
require __DIR__.'./User.php';
echo $obj->name;
// 注意:require 引入的文件,一旦出错,就会终止脚本运行
echo "脚本继续运行"; // 不会被输出

include_once和require_once的主要区别就是,当重复引入一段代码时,他们只会引入一次,从而避免变量函数多次声明。

Product.php (include_once、require_once)

// 这里虽然多次引入,但不会报错,他们会判断是否重复引入
include_once __DIR__.'./User.php';
require_once __DIR__.'./User.php';
echo $obj->name;

实际练习:

config.php 数据库链接配置文件

<?php
return ['type'=>'mysql','host'=>'localhost','dbname'=>'sys','username'=>'root','password'=>'root'
]
?>

connect.php

$config = require './config.php';echo "<pre>";
print_r($config);
// 将键名当作变量名,值作为变量的值。 对每个键/值对都会在当前的符号表中建立变量
extract($config);// pdo
$pdo = new PDO("$type:host=$host;dbname=$dbname;",$username,$password);echo $pdo?"数据库连接成功":"连接失败,请检查配置项……";

今日相关函数

  • mt_rand() 生成随机数的函数
  • date() 函数用于格式化时间
  • next() 将数组内部指针指向下一个单元
  • current() 返回数组中的当前指针指向值
  • reset() 将数组内部指针倒回到第一个单元
  • extract(array) 将变量从数组中导入到当前的符号表中

函数演示:

<?php// mt_rand ( int $min , int $max ) : intecho mt_rand(1,100);// date ( string $format , int $timestamp = ? ) : string$today = date("Y-m-d H:i:s"); echo $today;  // 2021-04-28 10:36:28//----------------------------------------// next()一般和current()配套使用$cities = ['安徽','上海',"武汉","北京","南京","合肥"];echo current($cities); // 安徽next($cities);echo current($cities); // 上海next($cities);echo current($cities); // 武汉next($cities);// 归位reset($cities);echo current($cities); // 安徽//----------------------------------------// extract ( array &$array , int $flags = EXTR_OVERWRITE , string $prefix = "" ) : int// 函数会将键名当作变量名,值作为变量的值。 对每个键/值对都会在当前的符号表中建立变量$arr = ['name'=>'zhang','gender'=>"男",'age'=>18];print_r($arr);extract($arr);echo "姓名:{$name} 性别:{$gender} 年龄:{$age}";// 姓名:zhang 性别:男 年龄:18?>

今日作业

  1. 使用定界符heredoc输出九格宫表格,要求颜色各异,每个小格子宽高50px?
<?php
$item = "";
$tr="";
for ($i=1; $i <= 3; $i++):$td="";for ($j=1; $j <= 3; $j++):$r = mt_rand(0,255);$g = mt_rand(0,255);$b = mt_rand(0,255);$td .= <<< TD<td style="background-color:rgb({$r},{$g},{$g})"></td>
TD;endfor;$tr .= <<< TR<tr>{$td}</tr>
TR;
endfor;echo <<< TABLE<table border="1" cellspacing="0" width="150" height="150">{$tr}</table>
TABLE;
?>

  1. 用php实现具有简单功能的计算器?
<?php
if (!empty($_POST)) {$a = $_POST["a"];$b = $_POST["b"];$operator = $_POST["operator"];$result = "";empty($a)?exit():"";if ($operator == '+'):$result = $a + $b;elseif ($operator == '-'):$result = $a - $b;elseif ($operator == '*'):$result = $a * $b;elseif ($operator == '/'):$result = $a / $b;endif;} else {$a = "";$b = "";$operator = "";$result = "";
}?>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>计算器</title><style>.content{width: 800px;margin: 20px auto;border: 1px solid black;padding: 30px;text-align: center;background-color: aliceblue;}.content input{height: 25px;padding: 10px;font-size: 16px;}.content input[type="submit"]{height: 49px;width: 49px;}.content select{height: 49px;width: 49px;font-size: 18px;}</style>
</head>
<body><div class="content"><h1>简单的计算器</h1><form action="calculator.php" method="POST"><input type="text" name="a" value="<?= $a; ?>"/><select name="operator"><option value="+" <?= $operator== "+"?"selected":"" ?> >+</option><option value="-" <?= $operator== "-"?"selected":"" ?> >-</option><option value="*" <?= $operator  == "*"?"selected":"" ?> >*</option><option value="/" <?= $operator  == "/"?"selected":"" ?> >/</option></select><input type="text" name="b" value="<?php echo $b; ?>"/><input type="submit" value="="/><input name="result" type="text" value="<?php echo $result; ?>"/><p>计算结果:<?= !empty($a)?$a.$operator.$b."=".$result:"" ?></p></form></div>
</body>
</html>



结束!!!

附:博客链接
【php基础入门】PHP环境搭建与初识php代码书写及演示PHP和JS中遍历数组的区别等知识点学习笔记
【php基础入门】细说php的变量以及常量的知识点详解

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

  1. velocity单双引号区别及转义方法

    2019独角兽企业重金招聘Python工程师标准>>> 一.区别: #set($name = "oschina") #set($s1 = "Welcom ...

  2. C++ 单双引号区别

    赢家只关注怎么赢,输家只关注赢家在干嘛 自己从 Python 转 C++,一个很严重的问题是搞不清引号怎么用.在 Python 中,单双引号无所谓,随便用,只要别混用就好.但是 C++ 明显不同,刚好 ...

  3. PHP单双引号区别及echo换行

    <?php $i = '$i';echo "$i\n";#双引号可换行,输出变量 echo '$i\n';#单引号不行,只能输出纯文本 echo "\n" ...

  4. java基础起步三-流程控制语句中的条件语句

    文章目录 流程控制语句结构: 1. 顺序结构 2. 分支结构 3. 循环结构 分支结构语法: 1. 单分支结构; 2. 双分支结构 3. 多分支条件语句: 选择结构 语法: 注意: 输入输出案例 练习 ...

  5. java跳转控制语句有哪些_Java语言基础学习之流程控制语句和跳转控制语句实例分析...

    本文主要向大家介绍了Java语言基础学习之流程控制语句和跳转控制语句实例分析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.流程控制语句 在一个程序执行的过程中,各条语句的执行顺 ...

  6. DM8联机逻辑备份perl脚本实现要点(单双引号、system和disql)

    概要 此文章非完整脚本功能分享,仅就实现逻辑备份功能进行分享. 问题背景 在编写DM8自动化备份perl脚本中,在涉及联机物理库级备份时,需要执行相关操作,正常情况下,相应语句如下(已简写,便于理解) ...

  7. java sql 引号_java拼接sql语句里的单双引号

    一.场景描述 平时在用字符串拼接sql语句的时候,有没有遇到过下面的情况: 没错,就是单双引号问题.其实,关于双引号我们是容易理解的,sql语句是用String字符串拼接的,因此需要用到双引号.但是为 ...

  8. python笔记22-literal_eval函数处理返回json中的单双引号

    前言 在做接口测试的时候,最常见的接口返回数据就是json类型,json类型数据实际上就是字串,通常标准的json格式是可以转化成python里面的对应的数据类型的 有时候开发返回的数据比较坑,不按常 ...

  9. matlab版本之间的单双引号问题

    matlab版本之间的单双引号问题 问题描述 运行matlab文件的时候出现错误提示 Creating a string using double quotes is not supported. U ...

最新文章

  1. Android性能优化之启动优化实战篇,最终入职阿里
  2. python编程自学难吗-为什么很多人不建议自学python编程呢?
  3. 2021年美妆短视频及直播营销报告
  4. 样式与include标签的使用及样式的继承和使用
  5. [转]bookmark整理之.NET编程相关
  6. 教你如何在Ubuntu中创建 Sudo用户
  7. 用Python3开发简单应用——兽人之袭
  8. java面试 bs cs_面试题思考:BS与CS的区别与联系
  9. 基于对数变换和非线性变换的图像增强(图像亮度调节)
  10. winform中ComboBox下拉框控件的动态数据填充
  11. php微信上传图文素材,php使用curl 上传微信公共平台素材文件
  12. 暑期计算机数学培训心得体会,实用的暑期培训心得体会3篇
  13. 小程序模拟器没问题,但在真机上样式错乱,这个要怎么解决?
  14. 5.3 react路由组件
  15. Windows Server 2016 IPAM 服务管理-李海园-专题视频课程
  16. 2006年主流建站系统及其典型网站演示(CMS篇)
  17. php+ajax上传文件
  18. UE4 Matinee的动画倒播
  19. 第十七章 : 网络系统
  20. 自动安装第三方库python,python第三方库自动安装脚本

热门文章

  1. HMaster是什么?
  2. 如何登录及使用FTP站点上传数据下载数据
  3. 有缺陷的人能不能成功?
  4. 显卡3D管理程序设置与游戏画质的关系
  5. 从“互联网+”到“互联网医疗+”,免费互联网医院开创新格局
  6. 单例模式的两种实现方式:恶汉式和懒汉式
  7. 单例中的懒汉和恶汉模式的区别
  8. WEBGATE-APM安装总结
  9. 硬盘里的文件被替换了怎么恢复
  10. 【STM32】TIM定时器