【小白专用】PHP基本语法 23.11.04

PHP基本语法

PHP是超文本预处理器 由服务器解析执行 可以与 html 进行混编(嵌入) ,PHP是一种弱类型语言

1.1 PHP标记

PHP和其他Web语言一样,都是用一对标记将PHP代码包含起来,以便和HTML代码区分开来。PHP支持4种风格的标记,如表所示。

标记风格开始标记结束标记
XML风格<?php?>
简短风格<??>
Script风格<script language="php"></script>
ASP风格<%%>

在表中,每种标记风格都有各自的开始标记和结束标记。

1.XML风格

该风格的标记以“<?php”开始,以“?>”结束,具体示例如下:

    <?phpecho "Connection established.\n";  ?> 

XML风格是本书中采用的风格,也是推荐使用的风格。该风格的标记在XML、XHTML中都可以使用,服务器不可以禁用这种风格的标记。

2.简短风格

该风格的标记省略了XML风格中的“php”,具体示例如下:

    <?echo "Connection established.\n";  ?> 

如果需要使用简短风格,必须在配置文件php.ini中设置short_open_tags选项为On,然后重启Apache服务器。因为这种标记风格在许多环境中的默认设置是不支持的,因此本书不推荐使用这种标记风格。另外,如果脚本中包含XML语句,应禁止使用这种风格的标记。

3.Script风格

该风格的标记以“<script language="php">”开始,以“</script>”结束,具体示例如下:

该风格的标记类似于JavaScript语言的标记,该风格的标记不需要进行配置,一般不推荐使用该风格标记,此处只需了解即可。

4.ASP风格

该风格的标记以“<%”开始,以“%>”结束,具体示例如下:

如果需要使用这种风格标记,必须在配置文件php.ini中设置asp_tags选项为On,然后重启Apache服务器。因为这种标记风格在许多环境中的默认设置是不支持的,因此本书不推荐使用这种标记风格

1.2 PHP注释

注释即对程序代码的解释,在写程序时需适当使用注释,以方便自己和他人理解程序各部分的作用。在执行时,它会被PHP解释器忽略,因此不会影响程序的执行。PHP支持C++、C、Shell三种风格的注释。

1.2.1.C++风格的单行注释

该注释是从“//”开始,到该行末尾或PHP结束标记之前结束。

1.2.2.C风格的多行注释

该注释从“/*”开始,到“*/”结束。

但不可以嵌套多行注释,下面的代码是错误的用法,具体示例如下:

1.3 语法规则

 PHP标识符与关键字

在PHP语言中,同样也需要对程序中各个元素命名加以区分,这种用来标识变量、函数、类等元素的符号称为标识符

PHP语言规定,标识符是由字母、数字和下画线组成的,并且只能是以字母或下画线开头的字符集合。在使用标识符时应注意以下几点:

命名时应遵循见名知义的原则。

系统已用的关键字不得用作标识符

关键字虽然可作为变量名使用,但容易造成混淆,不建议使用。

关键字是系统已经定义过的标识符,在程序中已有了特定的含义,如echo、class等,因此不能再使用关键字作为其他名称的标识符

下表中列出了PHP中常用的关键字。

PHP变量

讲解变量的定义、变量的数据类型、检测数据类型、可变变量、变量的引用赋值等关于PHP变量的内容。

在PHP中,若要存储数据,就需要用到变量。在PHP中,变量是由$和变量名组成的,并且变量的命名规则与标识符相同。此处需注意,变量名是区分大小写的,如$Apple与$apple是两个不同的变量。

变量类型

PHP可以为不同的数据指定不同的数据类型。PHP支持8种数据类型,如图所示。

PHP的数据类型分为标量类型(boolean、integer、float、string)、复合类型(array、object)和特殊类型(resource、NULL)。本节只介绍标量类型

1.boolean(布尔型)

布尔型是PHP中较常用的数据类型之一,该类型数据只能为true或false(true表示真,false表示假,这两个值是不区分大小写的),具体示例如下:

2.integer(整型)

整型表示存储的数据是整数,例如1、-1等。在计算机语言中,整型数据可以用二进制、八进制、十进制、十六进制表示,并且在前面加上+或-表示正整数或负整数。如果用二进制表示,数字前必须加上0b或0B;如果用八进制表示,数字前必须加上0;如果用十六进制表示,数字前必须加上0x或0X,具体示例如下:

二进制数是由0、1组成,每逢2进1位;八进制数是由0~7的数字序列组成,每逢8进1位;十六进制数是由0~9的数字和A~F的字母组成序列,每逢16进1位。此处需注意,整型数值有最大取值范围,它的范围与平台有关。

4.string(字符串型)

字符串是一系列的字符,字符串可以使用单引号、双引号、定界符三种形式来定义。虽然三种形式都可以定义一个字符串,但它们却有本质的不同,接下来详细讲解这三种形式。

1)单引号形式

该形式就是将字符序列用单引号括起来。如果需要在字符串中表示一个单引号,则需要使用转义字符(\,也称反斜杠)转义。如果需要在字符串中表示反斜杠,则需要使用两个反斜杠。此外,单引号这种形式的字符串只能转义单引号和反斜杠。PHP中常见的转义字符如表所示。

2)双引号形式

该形式就是将字符序列用双引号括起来,可以转义一些字符,还可以将字符串的变量名替换为变量值(即可以解析其中包含的变量)

3)定界符

字符串的另一种形式是使用定界符(<<<)。该形式在<<<之后提供一个标识符用来表示开始,然后是包含的字符串,最后是用同样的标识符表示结束字符串。注意,结束标识符必须从行的第一列开始,并且后面除了分号不能再包含其他任何字符。

定界符形式的字符串可以很容易定义较长的字符串,因此通常用于从文件或数据库中大段地输出文档。

检测数据类型

在PHP中,变量的类型是由存储的数据决定的。为了检测变量所赋的值是否符合期望的数据类型,PHP中内置了一些检测数据类型的函数,如表所示。

函数功能
is_bool()检测变量是否为布尔型
is_int()检测变量是否为整型
is_float()检测变量是否为浮点型
is_string()检测变量是否为字符串型
is_array()检测变量是否为数组型
is_object()检测变量是否为对象型
is_resource检测变量是否为资源型
is_null()检测变量是否为空值
is_numeric()检测变量是否为数字或数字组成的字符串

在表中,若变量属于某个类型,则函数返回true,否则返回false。

PHP变量

常见的PHP继承开发环境

变量是指在程序执行过程中值可以变化的量,常量是指在程序执行过程中值不变的量,例如圆周率π就可以定义为常量。在PHP中,常量是通过define()函数来定义的,其语法格式如下:

该函数有三个参数,具体如表所示。

另外,mixed 说明一个参数可以接受多种不同的(但不一定是所有的)类型。

获取常量的方法有两种:一种是直接使用常量名获取对应的值,另一种是使用constant()函数获取对应的值。

constant()函数的语法格式如下:

参数$name为需要获取常量的名称,也可以为存储常量名的变量。该函数调用成功,返回常量值,否则提示常量没有被定义。

defined()函数可以判断一个常量是否已定义,其语法格式如下:

参数$name为需要判断的常量名,若该常量已定义,则返回true,否则返回false。

预定义常量

预定义常量是指系统中已定义的常量,可以在程序中直接使用,具体如表所示。

常量名说明
__FILE__当前文件路径
__LINE__当前所在行号
__FUNCTION__当前的函数名
__CLASS__当前的类名
__METHOD__当前对象的方法名
PHP_OSPHP运行的操作系统,如WINNT、UNIX
PHP_VERSION当前PHP的版本号
TRUE布尔值true
FALSE布尔值false
NULL空值null
E_ERROR错误,导致PHP脚本终止运行
E_WARNING警告,不会导致PHP脚本终止运行
E_PARSE解析错误,由程序解析器报告
E_NOTICE非关键的错误

数据类型转换

数据类型转换是指变量或值从一种数据类型转换为另一种数据类型。转换有两种方式:自动类型转换和强制类型转换。

自动类型转换

自动类型转换是指数据类型由PHP自动转换,使用时需注意以下几点:

1. 其他类型转换为布尔类型

当其他类型需要转换为布尔类型时,整型0、浮点型0.0、字符串型""与"0"、不包含任何元素的数组、不包含任何成员变量的对象、NULL会被转换为false,其他值被转换为true。

2. 布尔型转换为整型

当布尔型转换为整型时,true转换为整数1,false转换为整数0。

3. 字符串型转换为整型或浮点型

如果字符串是数字序列的字符,则转换为该数字,否则会出现警告。

4. 布尔型转换为字符串型

true转换为"1",false转换为""。

5. 整型或浮点型转换为字符串型

整型或浮点型数据的字面样式转换为字符串形式。

强制类型转换

强制类型转换是使用者手动将某个数据类型转换成目标数据类型,其中最简单的方法是在需要转换的变量前加上用圆括号括起来的目标类型,具体如所示。

转换操作符说明转换操作符说明
(boolean)转换成布尔型(float)转换成浮点型
(string)转换成字符串型(array)转换成数组
(integer)转换成整型(object)转换成对象

除了上述转换方式外,类型转换还可以通过函数intval()、floatval()、strval()和settype()实现,具体如表所示。

函数说明
int intval (mixed $var [, int $base = 10 ])返回变量$var的integer数值
float floatval (mixed $var)返回变量$var的float数值
string strval (mixed $var)返回变量$var的string值
bool settype (mixed &$var , string $type)将变量 var 的类型设置成 type

通过圆括号方式进行的强制类型转换和上表中前三种函数进行的强制类型转换都没有改变这些被转换变量的类型与值,它们仅仅是将转换得到的新类型数据赋给新的变量,但上表中的settype()函数可以将变量的本身类型转换为其他类型。

PHP编程应该学习的基础知识,包括PHP基本语法、PHP变量、PHP常量、数据类型转换、流程控制语句等

变量及操作
PHP是弱类型语言,变量的类型通常是根据该变量的值决定

PHP中以 $ 作为前缀来定义变量,以a~z(大小写)或 _ 下划线定义变量名

变量是内存中用于临时存储值空间,称为变量名。变量名是用于对这个内存中的数据进行引用的

在大多数编程语言中,变量只能保持一种类型的数据,而且这个类型必须在使用变量前声明,例如C语言中。

在PHP中,变量的类型通常是根据该变量使用的上下文在运行时(即变量的值)决定的。

简单来说,var = 1;就是数字,var2 = '1’就是字符串,变量类型是由值决定的。
 

变量及操作

PHP中以 $ 作为前缀来定义变量,以a~z(大小写)或 _ 下划线定义变量名

变量是内存中用于临时存储值空间,称为变量名。变量名是用于对这个内存中的数据进行引用的

在大多数编程语言中,变量只能保持一种类型的数据,而且这个类型必须在使用变量前声明,例如C#语言中。

在PHP中,变量的类型通常是根据该变量使用的上下文在运行时(即变量的值)决定的

简单来说,var = 1;就是数字,var2 = '1’就是字符串,变量类型是由值决定的

语法:$变量名=值;
说明:必须以$符开头变量名只能包含字母、数字、下划线,只能以字母、下划线开头,不能以数字开头(数字不能紧挨着$)变量严格区分大小写
<?php// 定义变量$v1 = 1;$v2 = 1;$result = $v1 + $v2;echo $result;

传值与引用

传值赋值

直接使用 = 将变量的值赋值给另一个变量。

$a = 1;
$b = $a;
$b = 2;
echo $a;//结果是1

PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。

基本的 PHP 语法

PHP 脚本可以放在文档中的任何位置。

PHP 脚本以 <?php 开始,以 ?> 结束:

<?php
// PHP 代码
?>

PHP 文件的默认文件扩展名是 ".php"。

PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。

下面,我们提供了一个简单的 PHP 文件实例,它可以向浏览器输出文本 "Hello World!":

<!DOCTYPE html>
<html>
<body><h1>My first PHP page</h1><?php
echo "Hello World!";
?></body>
</html>

PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print

PHP 中的注释

<!DOCTYPE html>
<html>
<body><?php
// 这是 PHP 单行注释/*
这是
PHP 多行
注释
*/
?></body>
</html>

php的一些基本语法

1.php标记符

<?phpecho 'Hello';?>

2.常量

const THE_VALUE = 100;define('THE_VALUE',100);变量 $a=10;

3.函数

functiontraceHello($name){echo 'hello '.$name.'<br>';//字符串连接//echo "hello $name <br>";return 1;//返回值}调用:1.traceHello('zhangsan');2.$func='traceHello'$func('zhangsan');

4.流程控制

1.if elsefunction getLevel($score){if($score>=90){return'优秀';}elseif($score>=80){return '良好';}else{return '不好';}}2.switchfunction getLevel($score){$result = '不好';switch(intval($score/10)){//intval()取整或取出其中整数case 10:case  9:$result = '优秀';break;case  8:$result = '良好';break;default:$result = '不好';//break;}return $result;}

3.for循环

for($i=0;$i<100;$i++){if($i==20){ break; }if($i==40){ continue; }}4.while循环$i=0;while(%<10)...$i++;}5.do while循环$i=0;do{...$i++;}while($i<100);

5.逻辑运算符

|| && !

6.字符串常用方法

strpos($str,'o');substr($str,2);str_split();explode(' ',$str);

7.数组

$arr=array();$arr[0]='Hello';print_r($arr);$arr['h']='hello';$arr['w']='world';$arr =array('h'=>'hello','w'=>'world')

8.

require 'lib.php';//依赖,文件不存在报错require_once 'lib.php';//只引用一次include 'lib.php';//包含,文件不存在给出警告

9.声明类

namespace jk;//命名空间class Man{private $_age,$_name;private static $NUM = 0;//静态变量/*** @param int $age 年龄* @param string $name 名字public funcation _construct($age,$name){$this-> _age = $age;//this当前对象指针,self当前类指针,parent父类指针$this-> _name = $name;}//构造方法public funcation sayHello(){}//成员方法public static funcation say(){}//类方法}创建实例$a=new Man();$a->sayHello();//调用方法Man::say();$h = new\jk\Hello();//存在命名空间

10.类继承,重写方法

class Child extends Man{publicfunction _construct($age,$name){parent::_contruct($age,$name);}publicfunciton say(){//重写方法//parent::say(); //保留父类方法echo 'child';}}

11.常用库函数

time();//时间戳date_default_timezone_set('Asia/Shanghai');//时区设置date('Y-m-d H:i:s');//时间date('Y-m-d H:i:s',time());//时间戳转换成时间$obj =array('h'=>'Hello','w'=>'World');echo json_encode($obj);//转换成json格式$jsonStr ='{"h":"Hello","w":"World"}';$obj =json_decode($jsonStr);//json字符串转换为php对象$f = @fopen('data','w');//打开文件,@不输出警告fwrite($f,'hello');//写入文件fclose($f);$f = @fopen('data','r');while(!feof($)){//判断是否到达文件尾$content =fgets($f);//只能读取一行echo$content;}echofile_get_contents('data');//直接获取文件die('结束页面');

12.获取get参数和post参数

if(isset($_GET['name'])&& $_GET['name']){}//isset()判断变量是否设置empty($name)判断变量是否赋值

13.获取文件

$file = $_FILES['file'];
   $fileName = $file['name'];
  move_uploaded_file($file['tmp_name'],$fileName);

14.

cookie和sessionsetcookie('name','cheng');header('Location:a.php');//跳转//a.phpecho $_COOKIE['name'];//获取cookiesession_start();//启用session$_SESSION['name'] ='cheng';echo session_id();//获取sessionidecho$_SESSION['name'];//session_destroy();//销毁session

15.sqlserver数据库

$serverName = "aliks.cn,5468"; //数据库服务器,端口号
$uid = "tt_db"; //数据库⽤户登录名
$pwd = "alibaba156"; //数据库⽤户登录密码
$connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"DBiSys",'charset' =>'GBK');
$conn = sqlsrv_connect( $serverName, $connectionInfo);if ($conn === false) {  echo "Could not connect.\n";  die(print_r(sqlsrv_errors(), true));  
}  $tsql = "insert into tb_users(user_id,username,pass_word,email,phone,role) values (null,'$username','$password','$email','$phone','$role')";
//$tsql=iconv('UTF-8','GBK',$tsql);//查询前对SQL转码
//向数据库插入表单传来的值的sql/* Prepare and execute the query. */  
$stmt = sqlsrv_query($conn, $tsql, []);  
if ($stmt) {  /* echo "Row successfully inserted.\n";  */
} else {  echo "Row insertion failed.\n";  die(print_r(sqlsrv_errors(), true));  
}  /* Get the number of rows affected and display appropriate message.*/  
$rows_affected = sqlsrv_rows_affected( $stmt);  
if( $rows_affected === false)  
{  echo "Error in calling sqlsrv_rows_affected.\n";  die( print_r( sqlsrv_errors(), true));  
}  
elseif( $rows_affected == -1)  
{  echo "No information available.\n";  
}  
else  
{  echo $rows_affected." rows were updated.\n";  
}  /* Free statement and connection resources. */  
sqlsrv_free_stmt($stmt);  
sqlsrv_close($conn);  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/161918.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始搭建微服务(一)

构建项目父工程 添加公共核心模块 安装nacos 安装nacos nacos 文档地址&#xff1a; https://nacos.io/zh-cn/docs/what-is-nacos.html 本文使用版本2.2.2 下载地址&#xff1a;https://github.com/alibaba/nacos/archive/refs/tags/2.2.2.zip 使用nacos 我们下载是源代码 解…

shell脚本代码混淆

文章目录 起因安装 Bashfuscator安装BashfuscatorBashfuscator的使用 起因 很多时候我并不希望自己的shell脚本被别人看到&#xff0c;于是我在想有没有什么玩意可以把代码加密而又正常执行&#xff0c;于是我想到了代码混淆&#xff0c;简单来看一下&#xff1a; 现在我的目…

自动识别图片文字表格:高效神器,告别繁琐手动操作

现代科技的快速发展为我们的生活带来了许多便利和效率提升。在数据处理和文档管理方面&#xff0c;自动化技术也日益成熟和普及。一项非常有用的技术是自动识别文字生成表格&#xff0c;它可以将大量的图片识别成文本并转换为表格形式&#xff0c;使得数据的整理和分析更加简便…

NFS服务以及静态路由及临时IP配置

目录 一、NFC服务基础知识 1、NFS服务初相识 2、NFS服务工作原理 二、NFC服务基础操作 1、NFS服务端配置 2、NFS服务 - exports 相关参数 3、NFS服务 - 命令相关 三、RPC 远程调度 四、静态路由及临时IP配置 1、Linux 静态路由相关命令 2、Linux 临时IP地址添加与删除…

基于葡萄串的采摘点定位方法

文章目录 概要所需设备方法基于RGB图像的YOLOV8目标检测基于深度图的区域种子生长利用峰值定位法来确定竖向位置核心代码演示效果概要 这里将介绍如何用图像识别方法来定位葡萄串采摘点,用于机器人自动采摘操作。 所需设备 深度相机,这里我用的是realsense-L515 方法 主…

Nacos-2.2.2源码修改集成高斯数据库GaussDB,postresql

一 &#xff0c;下载代码 Release 2.2.2 (Apr 11, 2023) alibaba/nacos GitHub 二&#xff0c; 执行打包 mvn -Prelease-nacos -Dmaven.test.skiptrue -Drat.skiptrue clean install -U 或 mvn -Prelease-nacos ‘-Dmaven.test.skiptrue’ ‘-Drat.skiptrue’ clean instal…

Spring Boot 整合SpringSecurity和JWT和Redis实现统一鉴权认证

&#x1f4d1;前言 本文主要讲了Spring Security文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句&#xff1a;努力…

用户自定义消息及层次划分

有些人对术语 WM_USER 表示消息范围基的名称有不同的意见&#xff0c;因为 WM_USER 是由窗口类的实现者来定义的。他们抱怨的是&#xff0c;用户不能使用它们&#xff0c;因为它们属于窗口类定义的一部分。 但是&#xff0c;问题是&#xff0c;”这里的用户是谁&#xff1f;”…

【CAN通信栈基础】针对CAN通信栈,浅谈操作系统中断和轮询之间的区别和优劣

1. 前言 在操作系统中(例如AUTOSAR OS),中断和轮询是处理需要快速行动的事件的两种方法。中断是通过向CPU发送立即采取行动的信号来通知CPU需要注意的事件,而轮询则是CPU不断检查设备状态以确定是否需要CPU的注意。本文将详细探讨CAN通信中断和轮询之间的差异和优劣。 2.…

zookeeper节点类型

节点类型 持久节点&#xff08;Persistent Nodes&#xff09; 这些是Zookeeper中最常见的一种节点类型&#xff0c;当创建一个持久类型节点时&#xff0c;该值会一直存在zookeeper中&#xff0c;直到被显式删除或被新值覆盖。 临时节点&#xff08;Ephemeral Nodes&#xff…

记一次pdjs时安装glob出现,npm ERR! code ETARGET和npm ERR! code ELIFECYCLE

如往常一样&#xff0c;我使用pdjs来编译proto文件&#xff0c;但出现了以下报错&#xff1a; 大致就是pdjs的util在尝试执行npm install glob^7.2.1 escodegen^1.13.0时出错了 尝试手动执行安装&#xff0c;escodegen被正确安装&#xff0c;但glob^7.2.1出错 npm ERR! code E…

CANoe新建XML自动化Test Modules

文章目录 1.打开Test Modules2.新建Environment3.新建XML Test Modules4.新建.can文件5.打开XML Test Modules6.新建xml脚本并保存7.编译8.在.can文件写个测试用例9.修改报告格式为HTML10.运行查看报告后面介绍的文章会重复用到这部分,这里单独介绍下,后面不做重复介绍。 1.…