学习一门语言,首先知道他的后缀名,.php
其次是代码格式(需要注意的是php每一个结束之后必须加分号,对我这种写惯js人来说是一种煎熬)
<?php
// 此处是 PHP 代码
?>
强大的是在可以在html文件写php格式的语法
注释:
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
*/
变量:(使用之前不用提前声明,比js强多了,不过必须前带“$”,很烦)
$x=5;
$y=6;
也有局部作用域和全局作用域的概念,类似window.a的global $a的全局变量的方式 不过$GLOBALS[“a”]访问
关键字:前面的global就属于一种关键字,声明该变量为全局的变量
static:虽然这种声明不是全局作用域,但这种声明,函数执行完之后,变量不会被销毁,类似js的闭包
ECHO和print
- echo - 能够输出一个以上的字符串
- print - 只能输出一个字符串,并始终返回 1
提示:echo 比 print 稍快,因为它不返回任何值。
echo强大之处:
echo "This", " string", " was"//能同时输出2个或以上,调试非常好用
数据类型:字符串、整数、浮点数、逻辑、数组、对象、NULL。
正常来说和js差不多,字符串,num,string,object,Boolean。。。
php数据类型还算简单,比java简单多了,好像php也是弱类型语言。
两种复杂类型:数组,对象 ,这两种在每一种语言都非常重要
数组:
获得数组的长度 - count() 函数 count($cars)
在 PHP 中,有三种数组类型:
- 索引数组 - 带有数字索引的数组可以通过$cars[index]查找
- 关联数组 - 带有指定键的数组 通过$age['Peter']设置和获取
- 多维数组 - 包含一个或多个数组的数组
$cars=array("Volvo","BMW","SAAB");//php只有这种,没有js【】这种,属于索引数组,类似js第一种
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");//关联数组,类似对象,因为php对象比较麻烦
$cars = array//多维数组简单来说就是层层嵌套
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
字符串函数:一大堆:详见 :php字符串函数
这里就例句几个简单的做下比较
1,字符串长度函数 strlen("Hello world!") 等价于 js中的“hello world”.length
2,检索字符串内指定的字符或文本 strpos函数
strpos("Hello world!","world")//6 返回该字符第一个的下标
3,以千位分组来格式化数字。number_format() 相当于js的toLocaleString
4,str_shuffle() | 随机地打乱字符串中的所有字符。 |
5,ord() | 返回字符串中第一个字符的 ASCII 值。 |
6,strrev() | 反转字符串。 |
7,substr(str,start,length) | 返回字符串的一部分。截取字符串相当于js的str.substr(start,length) |
8,explode(seprator,string,limit) | 把字符串打散为数组。explode(',',$str,0),以“,”分割为数组类似于js split |
PHP 常量
有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
注释:与变量不同,常量贯穿整个脚本是自动全局的。
设置 PHP 常量
如需设置常量,请使用 define() 函数 - 它使用三个参数:
- 首个参数定义常量的名称
- 第二个参数定义常量的值
- 可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。
define("GREETING", "Welcome to W3School.com.cn!");//定义常量
echo GREETING;//使用常量
PHP 运算符(+、-、*、/、%)
没啥好说的 比较 运算符><=!=...也没啥好说的,唯一区别<>和!=一样
逻辑运算符也通用,不过也有两套 and ===$$与 or===||或 !非 xor异或
另外字符串拼接用“.”而不是“+”,echo 'hello'.$x.'world'
条件语句if和switch
if elseif else基本和js用法一样,唯一区别就是elseif之间是没有空格的
switch就一模一样了,不赘述了
循环(用的最多的是for)
- while - 只要指定条件为真,则循环代码块
- do...while - 先执行一次代码块,然后只要指定条件为真则重复循环
- for - 循环代码块指定次数
- foreach - 遍历数组中的每个元素并循环代码块
while,和do-while基本看了一下,大体一致,反正我js基本不用
好吧,for也一模一样,由于用的多,勉强写一写
for ($x=0; $x<=10; $x++) {
echo "数字是:$x <br>";
}
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
感觉不如js的forEach强大,这个更像for of循环
$colors = array("red","green","blue","yellow");
foreach ($array as $key =>$value) {//$key是键值相当于forEach的下标或关联数组的key值,$value每一项
echo "$value <br>";
}
函数(语言的灵魂)感觉也没啥区别
function functionName($val=50) {
被执行的代码;
}
注释:函数名能够以字母或下划线开头(而非数字)。
注释:函数名对大小写不敏感。
php形参可以有默认值,而js在es6才开始引入
数组函数 更多函数详见 : 数组函数集合
array() | 创建数组。像极了js的new Array,php没有字面量,只能这么穿件数组 |
array_merge() | 把一个或多个数组合并为一个数组。不多说和concat有啥区别 |
array_push() | 将一个或多个元素插入数组的末尾(入栈)。js的push |
array_shift() | 删除数组中首个元素,并返回被删除元素的值。 |
array_slice() | 返回数组中被选定的部分。 |
array_splice() | 删除并替换数组中指定的元素。 |
array_sum() | 返回数组中值的和。 |
array_pop() | 删除数组的最后一个元素(出栈)。 |
array_unshift() | 在数组开头插入一个或多个元素。 |
count() | 返回数组中元素的数目。===与sizeof |
sort() | 对数组排序。和js的sort有啥区别 |
没仔细看,用到可以查一下
- sort() - 以升序对数组排序
- rsort() - 以降序对数组排序
- asort() - 根据值,以升序对关联数组进行排序
- ksort() - 根据键,以升序对关联数组进行排序
- arsort() - 根据值,以降序对关联数组进行排序
- krsort() - 根据键,以降序对关联数组进行排序
PHP 全局变量 - 超全局变量
这些超全局变量是:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
$GLOBALS类似与window
$GLOBALS['a']===window.a,在函数或局部作用域内使用和声明全局变量
$_SERVER 这个可以设置一些最重要的元素,相当于BOM 看下表是不是很像location下的方法
元素/代码 | 描述 |
---|---|
$_SERVER['PHP_SELF'] | 返回当前执行脚本的文件名。 |
$_SERVER['GATEWAY_INTERFACE'] | 返回服务器使用的 CGI 规范的版本。 |
$_SERVER['SERVER_ADDR'] | 返回当前运行脚本所在的服务器的 IP 地址。 |
$_SERVER['SERVER_NAME'] | 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。 |
$_SERVER['SERVER_SOFTWARE'] | 返回服务器标识字符串(比如 Apache/2.2.24)。 |
$_SERVER['SERVER_PROTOCOL'] | 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。 |
$_SERVER['REQUEST_METHOD'] | 返回访问页面使用的请求方法(例如 POST)。 |
$_SERVER['REQUEST_TIME'] | 返回请求开始时的时间戳(例如 1577687494)。 |
$_SERVER['QUERY_STRING'] | 返回查询字符串,如果是通过查询字符串访问此页面。 |
$_SERVER['HTTP_ACCEPT'] | 返回来自当前请求的请求头。 |
$_SERVER['HTTP_ACCEPT_CHARSET'] | 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1) |
$_SERVER['HTTP_HOST'] | 返回来自当前请求的 Host 头。 |
$_SERVER['HTTP_REFERER'] | 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。 |
$_SERVER['HTTPS'] | 是否通过安全 HTTP 协议查询脚本。 |
$_SERVER['REMOTE_ADDR'] | 返回浏览当前页面的用户的 IP 地址。 |
$_SERVER['REMOTE_HOST'] | 返回浏览当前页面的用户的主机名。 |
$_SERVER['REMOTE_PORT'] | 返回用户机器上连接到 Web 服务器所使用的端口号。 |
$_SERVER['SCRIPT_FILENAME'] | 返回当前执行脚本的绝对路径。 |
$_SERVER['SERVER_ADMIN'] | 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。 |
$_SERVER['SERVER_PORT'] | Web 服务器使用的端口。默认值为 “80”。 |
$_SERVER['SERVER_SIGNATURE'] | 返回服务器版本和虚拟主机名。 |
$_SERVER['PATH_TRANSLATED'] | 当前脚本所在文件系统(非文档根目录)的基本路径。 |
$_SERVER['SCRIPT_NAME'] | 返回当前脚本的路径。 |
$_SERVER['SCRIPT_URI'] | 返回当前页面的 URI。 |
前后端交互 $_GET $_POST $_REQUEST
$name = $_POST['fname']; // $_GET $_POST $_REQUEST都可以
PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)。
基础到这也就完了,基础是枯燥的,学每一门语言都一样,前几周你会发现一点效果没有,不知道学这些有什么用,殊不知万地高楼平地起
只有基础牢固,才能会用这些知识点,才能学的更好!!!!!!!!!!