PHP学习日记【一】-基本语法-外部变量-环境变量-算数运算-流程控制

PHP 是“超文本预处理器” (外文名:PHP: Hypertext Preprocessor)是一种通用开源脚本语言。语法吸收了C语言、 Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。用PHP做出的动态页面与其他的编程语言相比, PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多; PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。目前PHP在全球网页市场、手机网页市场还有为手机提供API(程序接口)排名第一。PHP入门简单,学习入门易入手。 专一的Web开发语言工匠

1.1 PHP 环境安装

1、 Windows 环境安装;
2、 Linux 环境安装;
3、 集成环境包安装
集成环境包比较多。以下的这些全是各种英文名。只不过代表的是不同集成环境包的名字,不用去深纠。如下所示:
AppServ/PHPStudy/APMserv/XAMPP/WAMPServer... ...等等
对于我们才入门的学习者来说,选择集成环境包的原则:
更新快,版本比较新
操作简单易于上手
选择项不要过多
因此,我们下面使用的集成环境包是: PHPstudy。当然,如果你对此块很熟悉了,也可以
自行选择选择集成环境包。
可以以在官方网址下载: http://www.phpstudy.net/

1.2 写代码的工具选择

 推荐的开发工具:

 1. NotePad++

  https://notepad-plus-plus.org/由于某些不可抗的原因,请使用百度搜索 NotePad++

2.phpstorm(强烈推荐)
  https://www.jetbrains.com/phpstorm/
这些工具,你只需要下载下来,一直点击下一步,安装到你的电脑上即可。

 1.3 php 基本语法

1.3.1 phpinfo 函数 

  在这个 phpinfo.php 文件中写入如下代码。

<?php
phpinfo();
?>

 

  可以在浏览器地址栏里面,输入你的服务器地址。当前是以自己的电脑作为网页服务器来
使用的,你可以在地址中输入:


 代码解读:

phpinfo 是一个函数,这个函数会显示一个当前服务器详细的 PHP 信息。代码写完了。用分号(;)来告诉他代码写完了。因此,只要写完一段代码,就需要在后面加分号(;)。而前后两行的回车空行,是为了让代码更加好看,避免叠在一起,让人看着不舒服。其实,中间你有多少个回车空行都没有关系的,保证好看就行了。 PHP 的语法解释器(PHP 最
核心的部份)不会处理这些空行的。

 注意事项:

     1、 php 的代码部分全部要用半角的英文、很多人容易写成全角的英文和符号造成 PHP 代码报错。
  2、 PHP 代码的最后一行可以加也可不加分号。由于很多学习者特别是初学者经常犯一个毛病:写完一行代码不加分号。因此,容易报错。通常在公司里面规定:一行代码写完,就必须要加分号。
  3、 在写文件 oldboy.php 这个文件命名的时候,只用英文半脚(a-z A-Z 0-9 _-)这些字符来命名文件。文件命名不要用中文,不要用特殊附号,不要中间加空格,严格区分大小。

 1.3.2 php 变量与常量

1.3.2.1 php 变量

 在 oldboy.php 文件中写入如下代码。 

<?php
$iphone6 = 1;
$iphone6plus = 2;
echo $iphone6 + $iphone6plus; 
// echo 是在 PHP 里面最常用的一个输出、显示功能的命令。
?>

 $ 叫作美元符,英文单词: dollar。

 变量的几个特点:

  1.必须要以$开始。如变量 x 必须要写成$x
  2.变量的首字母不能以数字开始
  3.变量的名字区分大小写
  4.变量不要用特殊符号、中文, _不算特殊符号
  5.变量命名要有意义(别写 xxx, aaa, ccc 这种 变量名)

 变量分类: 可变变量、外部变量、环境变量

 1、可变变量举例说明: 

<?php
//在 oldboy.php 文件中写入如下代码。
//定义了一个变量叫作 $shu 将$shu 这个变量的值设为字符串的 biao
$shu = 'biao';
//定义了一个【变量】 $biao。将他的值设置为鼠标
$biao = '鼠标';
//$$shu 就是可变变量:在已声明的变量$shu 前又加上了一个变量符
echo $$shu;
?>

 2、外部变量举例说明:

 PHP 的外部变量是 PHP 在使用过程中规定好的一些变量。这个变量的规定是这样规定的,就这样使用。

 在 01.html 中写入如下代码。

<html><head>
<meta http-equiv="Content-Type" content="text/Html; charset=gb2312">
</head>
<body>
<!-- 这一行 method 对应的值改为了 post -->
<form action="reg.php" method="post">
<input type="text" name="username" />
<input type="password" name="pwd" />
<input type="submit" value="提交" />
</form>
</body>
</html>

在reg.php 中写入如下代码。

<?php
# reg.php
//$_POST 后面加上中括号,将 username 作为字符串放在中括号里面,就得到了表单里面的
<input type="text" name="username" /> 的值
$u = $_POST['username'];
echo "用户: ".$u.'<br />';
//$_POST['pwd'] 得到表单<input type="text" name="username" /> 的值
$passwd = $_POST['pwd'];
echo "密码: ".$passwd.'<br />';
?>

运行结果如下:

 

 通过上面的实验我们知道了,通过$_POST 这个外部变量,可以得到从表单输入的值。

常见外部变量

全局变量名 功能说明
$_COOKIE 得到会话控制中 cookie 传值
$_SESSION 得到会话控制中 session 的值
$_FILES 得到文件上传的结果
$_GET 得到 get 传值的结果
$_POST 得到 post 传值的结果
$_REQUEST 即能得到 get 的传值结果,也能得到 post 传值的结果

 3、 环境变量举例说明:

环境变量主要用的有$_SERVER 和$_ENV 两个环境变量。不过, $_ENV 逐渐被 PHP 的新版本给废弃了。

 其它环境变量:

$_SERVER["REQUEST_METHOD"] 请求当前 PHP 页面的方法
$_SERVER["REQUEST_URI"] 请求的 URI
$_SERVER["SERVER_SOFTWARE"] 用的是哪一种服务器
$_SERVER["REMOTE_ADDR"] 客户的 IP 地址
$_SERVER["SERVER_ADDR"] 当前服务器的 IP 地址
$_SERVER["SCRIPT_FILENAME"] 主前请求文件的路径
$_SERVER["HTTP_USER_AGENT"] 当前访问这个网址的电脑和浏览器的情况
$_SERVER["HTTP_REFERER"] 上级来源(用户从哪个地址进入当前网页的)
$_SERVER["REQUEST_TIME"] 当前的时间

 特殊环境变量

echo $_SERVER["REQUEST_METHOD"]."请求当前 PHP 页面的方法".'<br />';
echo $_SERVER["REQUEST_URI"]."
请求的 URI".'<br />';
echo $_SERVER["SERVER_SOFTWARE"]."
用的是哪一种服务器".'<br />';
echo $_SERVER["REMOTE_ADDR"]."
客户的 IP 地址".'<br />';
echo $_SERVER["SERVER_ADDR"]."
当前服务器的 IP 地址".'<br />';
echo $_SERVER["SCRIPT_FILENAME"]."
主前请求文件的路径".'<br />';
echo $_SERVER["HTTP_USER_AGENT"]."
当前访问这个网址的电脑和浏览器的情况".'<br/>';
echo $_SERVER["HTTP_REFERER"]."
上级来源(用户从哪个地址进入当前网页的) ".'<br/>';
echo $_SERVER["REQUEST_TIME"]."
当前的时间".'<br />';

1.3.2.2 php 常量

常量是长久不变的值。 常量在代码中的定义、书写方式:
  define(常量名,常量值)
  注:
    1.常量名可以小写,但是通常大写
    2.常量名可以不加引号,但是通常加上引号。
    3.在字符串中调用常量的时候,必须在引号外面
    4.常量名建议只用字母和下划线
用代码来实验一下:

<?php
define('MY_NAME','PHP 中文网');
echo MY_NAME;
//下面是错误的调用方式
echo '我的名字是 MY_NAME';
//正确的调用方式该这么写
echo '我的名字是' . MY_NAME;
/** 连接数据库文件 */
define( 'DB_NAME', 'blog' );
/** Database username */
define( 'DB_USER', 'blog' );
/** Database password */
define( 'DB_PASSWORD', '123' );
?>

 此外系统还准备了一些内置常量。这些常量都是规定好的。

常量名 说明
LINE 当前所在的行
FILE 当前文件在服务器的路径
FUNCTIOIN 当前函数名
CLASS 当前类名
METHOD 当前成员方法名
PHP_OS PHP 运行的操作系统
PHP_VERSION 当前 PHP 的版本
TRAIT Trait 的名字,php5.4 新加
DIR 文件所在的目录
NAMESPACE 当前命名空间名称(区分大小写)

 1.3.3 php 注释

所谓注释,汉语解释可以为:注解。更为准确一些。因为代码是英文的、并且代码很长,时间长了人会忘。所以我们会加上注释。
 注释的功能有很多:
  1.对重点进行标注
  2.时间长了容易忘快速回忆,方便查找
  3.让其他人看的时候快速看懂
  4.还可以生成文档,代码写完相关的文档就写完了,提高工作效率
  5.注释、空行、回车之后的代码看起来更优美
  6.注释可用来排错。不确定代码中哪一块写错了,可以将一大段注释,确定错误区间
  7.注释中间的部份的内容,电脑不会执行它
 PHP的注释分别:


 1、单行注释(只注释一行)
  // 表示单行注释
  # #号也表示单行注释,用的比较少
2、多行注释(注释多行)
  /* 多行注释 这里是注释区域代码 */


 单行注释举例: 

<?php
//声明一部 iphone6 手机的价格变量
$iphone6_price = 6088;
//显示输出手机价格
echo $iphone6_price;
?>

 多行注释举例:

<?php
/*
作者: 木头魂
时间: 2099.12.23
功能:这是一个假的多行注释的例子
*/
?>

 1.3.4 php 数据类型

 PHP 一共有八种数据类型,包括 4 中标量数据类型,即 boolean(布尔类型) integer(整型), float/double(浮点型)和 string(字符串型)两种复合数据类型,即 array(数组)和 object(对象), 两种特殊数据类型:即resource(资源)与 null (无,空白);

数据类型 描述
boolean(布尔型) 布尔型是最简单的数据类型,只有两个值 false() true()
string(字符串型) 字符串就是连续的字符序列,如 ehco "string";
integer(整型) 整型数据类型只能包含整数,这些数据类型可以是负数或者正数
float(浮点型) 浮点型类型用于存储数字,和整型不同的是浮点型可以有小数点
array(数组) 一组相同类型变量的集合
object(对象) 对象是一个实例,使用 new 命令创建一个对象
resource(资源) 资源是一种特殊的变量,保存在外部资源的一个应用,资源是通过函数来进行建立的
null( 空白) 特殊的值,表示变量没有值,任何变量的初始值都是 null

1.3.4.1 整型数据

 整型分为:10 进制/8 进制/16 进制
整型(整数)在计算机里面是有最大值和最小值范围的。

 10 进制声明:

<?php
//声明变量 整数,英文 int
//$int=1000;
$zhengshu = 1000;
echo $zhengshu."<hr>";
?>

 8 进制声明: 以 0 开始,后面跟 0-7 的整数

<?php
//8 进制的取值范围最大为 0-7,即 0,1,2,3,4,5,6,7
$bajinzhi = 012;
echo $bajinzhi."<br>";
?>

  16 进制声明: 以 0x 开始,后面跟 0-f, 0x 的 abcdef 不区分大小写。

<?php
//16 进制的取值范围最大为 0-f,即 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
$shiliu = 0x1f;
echo $shiliu."<p></p>";
?>

 1.3.4.2 布尔型数据

 布尔类型,汉语翻译过来之后,更好的解释是用道家中易经的语言来进行解释,即为:
  真/假
  对/错
  01

 举例:

<?php
//声明一个变量(拼音)为布尔
$buer=true;
//声明一个变量(英文)
$bool=false;
?>

 1.3.4.3 字符串数据

 在 PHP 语言中声明字符串有三种方式:
  1.用单引号声明: 所见即所得,吃啥吐啥。
  2.用双引号声明:解析变量
  3.用字界符声明(需要输入非常大段的字符串时使用)

 1.单引号声明

 用英文半脚的单引号,将字符串包起来

<?php
//声明字符串变量$zifu
$name="张三";
$zifu='曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非
要在这段爱情前面加上一段三个字,我$name 愿意说三个字:滚犊子';
echo $zhifu;
?>

 2.双引号声明字符串

 在字符串两边加双引号

<?php
//声明字符串变量$str
$str = "如果非要在滚犊子前面加上一个时间的话我愿意是马上。 ";
echo $str;
?>

 3.字界符声明
  1.在变量后面的等号写三个小于号(<<<)。
  2.然后在<<<后面写上字符(建议英文大写字符)。如下例中的: ABC

  3.然后换行写上任意想写的字符
  4.写完后顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的: ABC;

<?php
$dingjie = <<<ABC
如果
非要在这个滚犊子
前
面<br />
加上一段
<i>距离的话</i>
我想说: <h1>思想有多远,你就跟我滚多远</h1>
ABC;
echo $dingjie;
?>

 双引号和单引号区别?
1.双引号解析变量,但是单引号不解析变量。
2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。
3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' \
5.
单引号效率高于双引号,尽可能使用单引号
6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
7.神奇的字符串拼接胶水——.)点,用来拼接字符串。
8.我们将定界符声明字符串视为双引号一样的功能来看待。

1.3.4.4 浮点型数据

所谓浮点类型,可以理解为:我们数学里面的小数。
声明方式分为两种: 普通声明和科学声明
普通声明浮点数:

案例 1

<?php
//声明变量 fudian 的值为 3.14$fudian = 3.14;
echo $fudian;
?>

 案例 2

<?php
//声明变量$fl 的值为 0.88
$fl = 0.88;
var_dump($fl);
?>

1.3.4.5 php 数据类型之查看和判断数据类

 查看数据类型

1.gettype(传入一个变量) 能够获得变量的类型

<?php
//声明一个变量 88.8
$f = 88.8;
$type = gettype($f);
echo $type;
?>

2.var_dump(传入一个变量) 输出变量类型和值  

<?php
//多换几个类型试试
$str = '你喜欢尊上还是喜欢杀仟陌? ';
var_dump($str);
?>

  判断数据类型

 我们使用 is_* 系列函数。 is_types 这一系列的函数,来进行判断某个东西是不是某个类型。如果是这个类型返回真,不是这个类型返回假。

函数 类型
is_int 是否为整型
is_bool 是否为布尔
is_float 是否是浮点
is_string  是否是字符串
is_array 是否是数组
is_object 是否是对象
is_null  是否为空
is_resource 是否为资源
is_scalar 是否为标量
is_numeric 是否为数值类型
is_callable 是否为函数
<?php
//is_* 系列函数特点,如果是这个类型就返回的是真。不是这个数据类型就返回的是假
//声明类型为假
$fo = false;
if(is_bool($fo)){
echo '执行真区间';
}else{
echo '执行假区间';
}
//检查未声明的变量$p 是否为空,为空就执行真区间
if(is_null($p)){
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "<br/>";
//字符串类型的数值,看看执行的是真还是假
$str = '18.8';
if(is_numeric($str)){
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "<br/>";
//把 sca 的值换成整型、浮点、布尔和字符串试试
$sca = true;
//如果为标量,执行真区间

1.3.5 php 流程控制之 if else 语法

<?php
//我们定义一个泡到美女的变量($pao)为 true,意思为泡到了
$pao = true;
if($pao){
echo '林志玲,我爱死你了。 ';
}else{
echo '凤姐,我肯定不会爱你的';
}
//if...else 执行结束,后续代码
?>

1.3.6 php 算术运算

<?php
$x = 5;
$y = 6;
//5+6 为 11
echo $x + $y"<br>";
echo $x - $y;
?>

1.3.6.1 php 自加自减

 自加自减,就是把自己加 1,或者减 1。如果学习过其他编程语言。你会发现,此处的用法又是计算机里面的一个规定。可以这样用,用起来更加简洁

<?php
$x = 5;
//先赋值后加:即先将$x 的值赋值给$y。 $x 的值为 5,所以将$x 的值赋值给$y。 $y 也为 5
$y = $x++;
//$x 的结果输出为 6,因为赋值给$y 后, $x 自己又把自己进行了+1 操作。所以, $x 的结果为 6
echo $x;
?>

1.3.6.2 php 比较运算符

<?php
//使用 php 比较两个整数大小
$x = 5;
$y = 6;
//因为 5 大于 6 不成立,所以为错的。即为 false 执行了假区间
if($x > $y){
//真区间
echo '变量 x 大于 变量 y,成立';
}else{
//假区间
echo '变量 x 大于 变量 y,不成立';
}
?>

1.3.6.3 php 逻辑运算

<?php
$x = true;
$y = false;
//逻辑与(并且),要求两个都为 true 才执行真区间,所以代码中执行假区间
if($x && $y){
echo '执行了真区间';
}else{
echo '执行了假区间';
}
?>

1.3.6.4 php 位运算

<?php
//$x 二进制值为:
$x = 5;
//$y 二进制值为:
$y = 8;
//结果为 13
echo $x ^ $y;
//异或解释:如果 x,y 两个值不相同,则异或结果为 1。如果 x,y 两个值相同,异或结果为 0。由此可推 1101 为$x 和$y 异或出来的结果, 1101 用二进制转 10 进制工具转换后的结果就为 13。
?>

1.3.6.5 php 三元运算符和其它运算符

 

<?php
$x = true;
$x ? $y = 5 : $y = 6;
// bash 语法 [ $a -eq 0 ] && echo 1 || echo 0
//输出 5
echo $y;
?>

 1.3.7 PHP 流程控制

 1.3.7.1  if 条件结构流程

  语法规则

<?php
if(判断语句 1) {
执行语句体 1
}else if(判断语句 2){
执行语句体 2
}else if(判断语句 n){
执行语句体 n
}else{
最后的 else 语句可选
}
//后续代码
?>
<?php
/*开发一个计算人的BMI指数并给出结果的程序体质指数(BMI)=体重(50kg)/身高 (1.6m)^2 =19.5
| BMI值  | 说明 |
| 小于18 | 偏瘦 |
| 18-25  | 标准 |
| 25-30  | 超重 |
| 大于30 | 肥胖 |
*/
$weight=50;
$hight=1.6;
$bmi=$weight/($hight*$hight);
if($bmi < 18){
	echo "你的BMI为{$bmi},体重偏瘦,需要加强营养"."</br>";
}else if(18 <= $bmi && $bmi < 25){
	echo "你的BMI为{$bmi},体重标准,很不错"."</br>";
}else if(25 < $bmi && $bmi <= 30){
	echo "你的BMI为{$bmi},体重超重,须要减肥啦"."</br>";
}else{
	echo "你的BMI为{$bmi},体重肥胖,必须要减肥啦"."</br>";
}
exit;
?>

 1.3.7.2 if 语句多种嵌套

 在if语句中可以嵌套一个或多个if语句,以实现对多个参数的判断,这就是if语句的
多种嵌套。其结构形式如下:

<?php
if(判断 1){
    if(判断 2){
                代码段 1
     }else{
                代码段 2
           }
}else{
        if(判断 3){
                代码段 3
        }else{
                代码段 4
        }
    }
?>

练习: 王同学在出行和项目中也是极度有计划性。他给自己的生活秘书工作秘书分别指派了出差的行程:
生活上:
先查天气,下雨带雨具和毛巾。不下雨要带防晒霜
雨具、毛巾和防晒霜的情况要提前检查,如果没有要及时买
工作上:
要提前沟通去大连前的工作计划,准备好了要及时检查,检查合格,打印签单。
没有及时准备好的情况下,要列出主要的项目沟通议题。

查看代码
 <?php
//0 表示工作秘书, 1 表示生活秘书
//用代码模拟随机产生当前的工作是生活秘书的还是工作秘书的
$mishu = rand(0,1);
if($mishu){
    //下雨和不下雨的状态,随机产生
    //下雨状态为 1
    //不下雨状态为 0
    $xiyu = rand(0,1);
    if($xiyu){
        //是否购买雨伞
        $you = rand(0,1);
            if($you){
                echo '下雨天,已购买不用买雨伞';
            }else{
                 echo '下雨天,未购买,需要买雨伞';
            }
        }else{
            //是否购买防晒霜
            $you = rand(0,1);
            if($you){
                echo '没下雨,有防晒霜';
            else{
                echo '没下雨,需要准备防晒霜';
            }
        }
}else{
    //是否准备好了会议议程
    $shifou = rand(0,1);
    if($shifou){
        echo '已准备好,可以随时出发';
    }else{
        echo '没有准备好,需要打印,延迟出发';
    }
}

1.3.7.3 switch 语句的使用(多分支的 if 语句变种)

  switch...case的语法结构如下:

<?php
switch(变量){ //字符串,整型
    case 具体值:
            执行代码;
            break;
    case 具体值 2:
            执行代码 2;
            break;
    ase 具体值 3:
            执行代码 3;
            break;
    default:
    }
?>

上面的break、 default是可选的
不要在case后面写成分号,后面是冒号:
不要在case后面写判断区间,如( $foo > 20 或者 $foo == 30)
switch里面在变量最好是 整型,字符串,因为布尔判断更适合if...else..

1.3.7.4 do/while 循环语句的使用

  循环结构

<?php
//定义需要往返的次数,老外喜欢从 0 开始计数,我们也从 0 开始计
$count = 0;
//while 后面接布尔值判断,为真执行,为假停止
//$count 小于 5 的时候执行,也就是$count 为 0 至 5 的时候执行
//如果$count 不小于 5 了,循环停止执行后续的代码
//循环开始处
while($count < 5){
   echo '我是王同学,我是第' . $count .'次出差<br />';
    //每次执行让$count+1,这样的话,就不会产生$count 永远小于 100 的情况了
    $count++;
 //循环结束
 }
echo '后续代码';
?>

do...while与while的区别
do...while与while的语法结构基本一样,也是一个布尔型循环,功能也基本一样。
do...while与while的区别是,它们的值的检查时机不同。
do-while不论while判断是否成立,先执行一次代码代码块循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)。
然而我们之前的while循环会检查布尔判断区域,成立则执行。不成立则不执行。

1.3.7.5 for 循环语句的使用

  for 循环是 PHP 中的一种计数型循环,它的语法比较数活多变。

for (表达式 1; 表达式 2; 表达式 3){
       需要执行的代码段
}

表达式1 是初始化赋值,可以同时赋值多个代码。
表达示
2 在每次循环开始前求值。如果值为 TRUE,则继续循环,执行嵌套的循环语句。
如果值为
FALSE,则终止循环。
表达示
3 在每次循环之后被求值。

1.3.7.6 goto 循环语句的使用

<?php
for($i=0; $i<10; $i++) {
    echo '第'. $i .'周往返北京大连<br />';
    if($i == 5){
        goto end;
    }
}
end:
        echo '集团公司要求停止此项';
?>

 

posted @ 2023-08-03 15:13  木头魂  阅读(63)  评论(0)    收藏  举报