php基础知识(语法与原理)

时间:2022-10-13 00:40:12

一、php简介

PHP超文本预处理器。是嵌入HTML文件中的服务器脚本程序。

PHP代码标记:<?php …. ?>

PHP文件的扩展名:.php

PHP文件的执行:必须从域名开始访问

PHP每条语句必须以英文(;)结束

二、php网页基础知识

①  IP地址

IP地址分为v4、v6两个版本,v4长度为32位2进制码,v6为128位2进制码。v4版本IP在2010年左右已经用完,主要格式是192.168.4.238(点分十进制法),由四段组成,每段8位二进制,用十进制表示的取值范围为:0-255

特殊IP:127.0.0.1用于本机的软件测试或网站测试,只能自己访问自己的127。

②  域名解析器(DNS服务器)

可以理解为,储存了域名与IP地址对应表的数据库

本地的DNS:hosts文件,一个隐藏的系统文件,没有扩展名。当在浏览器中输入域名时,首先在本地DNS查找有无对应IP然后才在外网DNS查找对应IP。hosts文件的路径:C:\Windows\System32\drivers\etc\hosts

③  域名解析,访问流程图

php基础知识(语法与原理)

三、php基础语法

①   php变量

php变量必须以”$”开头,例如:$name、$age

不能以数字开头,最后按照驼峰命名法

写在””引号中的变量最好用 { } 括起来,以免出现末端有字符不解析的情况

②  php数据类型

标量数据类型:字符串型、整型、浮点型、布尔型

复合数据类型:数组、对象

特殊数据类型:资源、NULL

(1)整型

取值范围:-21亿~21亿

(2)浮点型  (可以包含整数)

取值范围:-1.7E-308~1.7E+308

由于浮点数不能转换成精确的二进制,所以有时在运输时会出现错误,例如:(0.7+0.1)*10==8 结果为false

(3)字符串型(在引号中,解析变量,需在变量后加上符合或者空格)

  1. 双引号“”

双引号内解析变量的值

  1. 单引号‘’

单引号内解析变量的名,直接在客户端显示$name

  1. 长字符串

$Str = <<<heredoc   “heredoc”的名字可以随意取,按照变量命名规则

……. 填写字符串内容

heredoc;   结尾“heredoc”必须另起一行,分号结束

(4)资源型

对第三方插件等的操作,如调用mysql数据库等,第三方的内容称之为资源

(5)布尔型

只有true或false两种类型值

(6)NULL (空型)

如果变量不存在,返回NULL,空型只有一个值,就是NULL

(7)数组(一组数的集合,通过索引查找元素)

a ) 数组的分类:

1. 索引数组  (与js数组基本相同)

数组的下标是从0开始的正整数,这样的数组称为“索引数组”

$arr=array(10,20,30,40);

$arr[0]=10;

2.关联数组

数组的下标是字符串,这样的数组称为“关联数组”

$arr=array(“name”=>”Tabb”,”sex”=>”gender”,”age”=>”22”);

由于关联数组没有整数型下标,所以不适合使用for循环来遍历

3. 混合数组

数组下标既有整型,也有字符串,这样的数组称为“混合数组”

$arr = array("name" => "tabb", "age" => "20", "tom", 20);

echo $arr[0] 输出结果为“tom”;说明整型下标是从”tom”开始计算的

b ) 数组的创建:

1. 使用array()函数创建数组:

通过“=>”重载符号给数组元素指定下标

如果数组元素没有指定下标,其下标为,当前最大索引+1,示例:

$arr=array(20=>”tabb”,2=>”28”,20,”tom”) 其中”20”的索引为21,如果都是字符下标,那么没有指定下标的元素,索引从0开始

使用array创建数组:

$arr = array([$key=>]$value,[$key=>]$value,…);

2. 使用[ ]中括号创建数组

$arr[“key”]=$value

不像js,可以不用先声明一个空数组,如果指定的数组不存在,会自动创建数组

[ ] 中括号内容为空时,创建数组

$arr[ ]=30;

如果数组不存在,就会创建一个数组,并添加第一个元素

如果数组存在,添加数组的元素的下标,是数组中的最大整形下标+1

c ) 多维数组:

array(array(1,2,3,4),1,2,3,array(1,2,3,4))

使用[ ]中括号可以快速创建多维数组:

$arr[ ][ ][ ][ ]=10; 快速创建一个4维数组

d ) 数组相关函数:

1. print_r ( )

打印关于变量的易于理解的信息

如果给出的数组或者对象,按照一定格式显示键和元素

2. unset ( )

删除数组元素,删除的是数组元素的值,下标还存在,不同于js的长度不变,此处删除元素后,数组长度发生变化

删除变量

3. count ( )

计算数组中的单元数目或对象中的属性个数

4. foreach ( )  只能用于遍历数组

foreach( $arr as [$key=>]$value ){ } 如果是索引数组,[$key=>]这个内容可以不要

③  php数据类型判断

(1) var_dump()

打印变量的相关信息,可以打印多个变量,用”,”逗号隔开

(2) is_*()  一组判断变量类型的方法,返回一个布尔值

  1. is_bool():判断变量是不是布尔型
  2. is_int():判断变量是不是整型
  3. is_float ():判断变量是不是浮点型
  4. is_numeric():判断变量是不是数值型
  5. is_string():判断变量是不是字符串型
  6. is_array():判断变量是不是数组型
  7. is_object():判断变量是不是对象型
  8. is_null():判断变量是不是空型
  9. is_resource():判断变量是不是资源型

……

(3) isset()

检测变量是否设置

返回值:如果变量存在,且不等于NULL,返回true,否则,返回false

(4) empty ( )

检测一个变量是否为空,例如””,0,”0”,null,array(),var $var 以及没有任何属性的对象都将被认为是空,如果为空,返回值TRUE

④  数据类型的转换

1)转换为bool (bool)

$a = "0";

$result = (bool)$a;

var_dump($result)  结果为: bool(false)

这些数据转换为bool值时为false:0、0.0、””、”0”、array()、null

资源类型转换为bool永远为true

2)转换为整型数值 (int)  (int)$name

1.如果以数值开头的字符串,将整型部分转换为整型数值,去除后面的字符

2.如果不是数值开头的字符串,转换为0

3.bool值true转换为1,false转换为0,null转换为0

3)转换为浮点数值 (float)  (float)$name

1.如果以数值开头的字符串,将数字部分转换为数值(包含浮点部分),去除后面的字符

2.如果不是数值开头的字符串,转换为0

3.bool值true转换为1,false转换为0,null转换为0

4)转换为字符串 (string)  (string)$name

1.null、false转换为””,空字符串

2.true转换为字符串“1”

⑤  php运算符

1)数值运算符(+-/*%++--

使用方法与js中的使用方法基本相同

2)字符串运算符

“.”点运算符表示字符串链接符,与js中用”+”号拼接字符串类似

$a=”abc”;

$b=$a.100  或者使用”.=”表示自己与自己链接字符串:$a.=100

3)赋值运算符(=+=-=*=/=%=)与js基本相同

4)比较运算符(><>=<===!====!==)与js基本相同

举例:10==“10px”  结果为:true;在包含数字的运算中“10px”会先转换为数值

举例:10===“10px”  结果为:false; 全等比较,包括数据类型

(5)    逻辑运算符(&&||!)与js基本相同

(6)    三元运算符(表达式?结果1:结果2)与js基本相同

(7)    运算符优先级

php基础知识(语法与原理)

⑥  php获取表单数据

 <form method="get" action="">

用户名:<input type="text" name="username">

密码:<input type="text" name="password">

<input type="hidden" name="ac" value="login">  //隐藏域,向后端传递信息

<input type="submit">

</form>

(1) 超全局数组变量:$_GET[ ]

获取get方法提交的数据,存放到GET数组中

array(2) { ["username"]=> string(6) "abcdef" ["password"]=> string(5) "12345" }

获取其中的数据示例:$username=$_GET[“name”]

(2) 超全局数组变量:$_POST[ ]

获取post方法提交的数据,存放到POST数组中

⑦  php中的条件判断ifswitch js基本相同

switch比if的效率高,主要用于取值判断

⑧  php中的循环语句

(1)while(条件判断){ break }  js基本相同

(2)for(条件判断){ }  js基本相同

(3)break语句 可以添加break 2表示跳出两层循环

(4)continue语句 跳出本次循环,直接开始下次循环

⑨  php中的拷贝传值和引用传地址

(1) 拷贝传值

将一个变量的值,“复制”一份,传递给另一个变量,这两个变量之间没有关系,是相互独立的两个变量,修改其中一个变量,另一个变量不会变

php中属于拷贝传值的数据类型为:字符型、整型、浮点型、NULL、数组

(2) 引用传地址

将一个变量的数据地址,“复制”一份,传递给另一个变量,这两个变量指向的是“同一标物”,如果这个”标物”发送变化,两个变量都会发送变化。所以修改一个变量的值,则另一个变量也会发生变化。

php中属于引用传地址的数据类型为:对象、资源

手动声明引用传地址:在引用变量前,加上“&”符号即可,这样可以使所有的数据类型实现引用传地址,示例如下

$a=10;  $b=&$a;  这样即是把$a的引用地址传地给了$b

⑩  php中的函数  js基本相同

示例如下:

function name ($name) {  //函数名不能相同,只能唯一存在,且不带$符号

echo “{$name}的年龄是20”;

return;

}

1)函数的参数可以传递引用地址:

function test ( &$a,$b ){  //此处传递的是$a的引用路径

$arr[ ]=$abc;

}

2)函数的作用域:

全局变量:在函数外部定义的变量,网页执行完消失

局部变量:在函数内部定义的变量,函数执行完消失

不同与js,在php中,全局变量不能直接在函数内部使用

php函数中使用global关键字声明全局变量

使用global关键字,可以将一个变量,声明为全局变量,这里的全局变量不是js中认为的全局变量

global关键字的使用:

  1. global关键字,只能在函数内部使用。
  2. global关键字,不能一边声明全局变量,一边赋值。不能有这样的写法:

global $a=10;

  1. global的真正含义,是“引用传地址”,与js中的全局变量不同

3php日期时间函数:

1. date( );

echo date(“Y-m-d H:i:s”);   输出时间,可改为Y年m月d日

2. time( );   时间戳   1970年到当前的秒数(js是毫秒)

4include 语法结构

        描述:包含并运行指定文件

        语法:include $filename 或者 include($filename);

示例:include “include/conn.php”;

5requrie 语法结构

        描述:包含并运行指定文件

        语法:requrie $filename 或者 requrie ($filename);

示例:requrie “include/conn.php”;

注意:include与require都是包含并运行文件,但是是有区别的。如果包含的文件不存在,include将报一个警告错误,脚本继续向下运行。而require将报一个致命错误,脚本将立即终止执行。

6header()

        描述:发送一个自定义的http报文,即:php返回的数据格式或字符集

        语法:void header( string $string)

示例:

※  header(“content-type:text/html;charset=utf-8”);

※  header(“location:http:www.baidu.com”);  //网页跳转

php基础知识(语法与原理)的更多相关文章

  1. mysql基础知识语法汇总整理&lpar;二&rpar;

    mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...

  2. mysql基础知识语法汇总整理&lpar;一&rpar;

    mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...

  3. oracle基础知识语法大全

    ORACLE支持五种类型的完整性约束NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.CHECK (检查)--检查在约束中 ...

  4. JSP基础知识➣语法整理(二)

    A.脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式:<% 代码片段 %>,但是不能包含文件的方法和变量的声明 B.J ...

  5. 【shell编程】之基础知识-语法

    一.shell变量 1.定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要), 如: your_name="runoob.com" 注意,变量名和等号之间不能有空格 ...

  6. FPGA基础知识了解

    FPGA学习的一些误区 FPGA入门必看资源 FPGA百度百科 FPGA基础知识及其工作原理 高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列(FPGA).无论你使用图形化设 ...

  7. 风炫安全WEB安全学习第十九节课 XSS的漏洞基础知识和原理讲解

    风炫安全WEB安全学习第十九节课 XSS的漏洞基础知识和原理讲解 跨站脚本攻击(Cross-site scripting,通常简称为XSS) 反射型XSS原理与演示 交互的数据不会存储在数据库里,一次 ...

  8. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...

  9. nginx Location 语法基础知识

    URL地址匹配是Nginx配置中最灵活的部分 Location 支持正则表达式匹配,也支持条件匹配,用户可以通过location指令实现Nginx对动丶静态网页的过滤处理. Nginx locatio ...

随机推荐

  1. &lbrack;Java 基础&rsqb;运算符和表达式

    Java运算符 (1)赋值操作符 赋值操作符(=)表示:取右边的值(即右值),把它复制给左边(即左值). 右值可以是任意的常量.变量或表达式(只要可以生成一个值). 左值必须是一个明确的.已命名的变量 ...

  2. Apache安装问题:configure&colon; error&colon; APR not found &period; Please read the documentation

    Linux上安装Apache时,编译出现错误: checking for APR... no configure: error: APR not found .  Please read the do ...

  3. js库中&dollar;冲突的解决方法

    http://www.w3school.com.cn/jquery/core_noconflict.asp

  4. Luogu P1877 &lbrack;HAOI2012&rsqb;音量调节

    题目描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量.在演出开始之前,他已经做好一个列表,里面写着每首歌开始之前他想要改变的音量是多少. ...

  5. linux的基本操作3(权限)

    sudo cat /etc/passwd 查看账户信息用户有自己的编号是uid,组也有自己的编号是giduseradd -D 查看默认添加账号的模板sudo useradd -m liu   添加带h ...

  6. PhoenixFD插件流体模拟——UI布局【Simulation】详解

    前言 之前使用RealFlow做流体模拟,但是总得和3ds导来导去,略显麻烦,特意学习PhoenixFD插件,直接在3ds中进行流体模拟.若读者有更好的流体模拟方法,欢迎在评论区交流. 原文地址:ht ...

  7. 哇塞!HTML5 实现的雨滴效果 CSS发抖

    http://dreamsky.github.io/main/blog/rainy-day/ Rainy Day – 哇塞! HTML5 实现的雨滴效果 http://www.webhek.com/m ...

  8. 爬虫之BeautifulSoup

    BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后便可以使用他提供的方法进行快速查找指定元素,从而使得在HTML或XML中查找指定元素变得简单. ...

  9. 单词搜索 II &&num;183&semi; Word Search II

    [抄题]: 给出一个由小写字母组成的矩阵和一个字典.找出所有同时在字典和矩阵中出现的单词.一个单词可以从矩阵中的任意位置开始,可以向左/右/上/下四个相邻方向移动. 给出矩阵: doafagaidca ...

  10. AndroidStudio项目打包成jar

    AndroidStudio项目打包成jar 前言:在eclipse中我们知道如何将一个项目导出为jar包,现在普遍AndroidStuido开发,这里一步一步详加介绍AS项目打包成jar,jar和ar ...