PHP基础语法随记,PHP基础语法
PHP常量:
预定义常量:
PHP自身也定义了大量的预定义常量,可以使用get_defined_constants()来查看,比较常用的预定义常量有:
PHP_OS:PHP系统。
PHP_VERSION:PHP版本。
PHP_EOL:换行符(跨平台移植型,很重要),会根据不同的操作系统使用不同的值。不同操作系统换行符不同。 window: \r\n *nix: \n MAC: \r
PHP_INT_MAX:整形的最大值。
PHP_INT_SIZE:整形占用的字节数。
PATH_SEPARATOR:环境变量中路径与路径间的分隔符。
DIRECTORY_SEPARATOR:目录分隔符。window下 '\' 和 '/'都可以, *nix只能使用'/'。
魔术常量:
形似常量,实非常量,语法上类似常量,称之为魔术常量!
__FILE__:完整的文件路径和文件名。典型的应用(项目代码)如:
define('ROOT_PATH',str_replace('7.php','',__FILE__));
echo ROOT_PATH;
结果等同(__DIR__,该常量在PHP5.3新增)
__FUNCTION__:获得当前的函数名的魔术常量!
PHP进制的转换
在PHP中,提供了一系列函数进制的转换:
hex:16进制;dec:10进制;oct:8进制;bin:2进制。
如:decbin(),将10进制数转换2进制数;octhex()将8进制转换成16进制。
对于整形,一旦数值过大,不会溢出,而是发生类型转换,会转成浮点型。
php不支持无符号整型。
如:
$a = PHP_INT_MAX; //2147483648
$b = $a+1;
var_dump($b); //float
在php中,float,double 实际上是相同的。浮点数具有14位十进制数字的精度,最大值 和平台相关,通常是 1.8e308。浮点数的比较是不靠谱的。在编写程序的时候,不要试图通过比较两个浮点数是否相等来获得业务逻辑。
字符串的定义方式
有四种方式来定义字符串:双引号,单引号,heredoc(定界符),nowdoc(定界符)
双引号可以解析变量,单引号不能解析变量。单引号可以包含双引号,双引号可以包含单引号,但是引号不能包含引号自身。
变量能不能解析,不是取决于变量被哪一个包含,而是取决于定义字符串是单引号还是双引号,如果是双引号,则变量解析,如果是单引号,则不解析。
在字符串中,如果有{$ 连在一起的时候,就表示{}当中的这个作为一个变量进行解析。
变量被认为NULL的情况
1.被赋值为 NULL
2.尚未被赋值
3.被unset()
最常见的一个应用就是将对象的值赋值为NULL,以销毁该对象。
数据类型相关函数
var_dump():打印变量的详细信息,包括类型和值。
gettype():获得类型。
settype():设置类型。
is系列:其中is_array()会经常用到。
isset():检查一个变量是否存在(设置)。
empty() : 检查一个变量是否为空.
对于isset()而言,只要有声明过(有值),不管他的值是什么,都返回true.
对于empty()而言,相当于boolean(变量),然后再来取反.
转换成布尔型被认为是FALSE的情况
1.布尔值 FALSE 自身
2.整型值 0 (零)
3.浮点型值 0.0 (零)
4.空字符串, 以及 字符串 "0" (注意"00"、"0.0"被认为是TRUE)
5.空数组
6.特殊类型 NULL (包括尚未设定的变量)
所有其它值都被认为是 TRUE(包括对象和资源)。
PHP的运算规则
除法运算的结果,可能是浮点数,也可能是整数。
在取模运算中,如果有小数,则会去除小数部分。
在取模运算中,结果的正负取决于第一个数。
原码
将十进制转成的二进制。用最高位表示符号位,0表示正数,1表示负数。
反码
对于正数,反码和原码相同
对于负数,符号位不变,其它位取反。
补码
对于正数,补码和原码相同
对于负数,在反码的基础上 + 1。
转码的时候符号不变,运算的时候符号位参与运算,
移位运算
右移:低位溢出,符号位不变,高位用符号位补全 (相当于除以2的n次幂,然后取整)
左移:高位溢出,符号位不变,低位补0 (相当于乘以2的n次幂)
不管是左移还是右移,它只会改变该数的大小,不改变符号,所以在移位操作的时候,符号位始终是不变的。
PHP运算符号优先级
and or 和 && ||的区别。
用法相同,优先级不同。 && 、|| > = > and 、 or
break:终止,当执行到break时,整体的循环循环语句直接结束。
continue:继续,当前循环体结束执行,而继续执行下次循环体。
include和require
设置include_path的值
使用函数set_include_path()。
set_include_path('d:/php/test');然后直接require 'file.php',
注意:在设置时,后设置的会将前面设置的覆盖掉!
取得当前的include_path的值
利用函数:get_include_path()可以获得当前的include_path的值!
目录之间采用分号连接.
set_include_path('d:/php/test'.PATH_SEPARATOR.get_include_path());
PHP对代码的编译时已源文件为单位的,当前文件如果有语法错误,php会报错。不会执行代码编译处理。
require(require_once)和include(include_once)的区别
在载入文件失败时,对文件的依赖不同,触发的错误不一致!级别不同。
require(require_once):会触发一个 致命错误,导致脚本终止;
include(include_once):会触发一个 警告错误,脚本继续运行。
require(include)和require_once(include_once)的区别:
带once指的是加载一次。在执行加载时,带once的会先对当前文件是否已经加载的了该文件做一判断。
已经加载:不会再次加载
没有加载:执行加载!
使用尽量使用require即可。
控制脚本执行
终止脚本执行和延迟脚本执行。
die(),exit():终止脚本执行,一旦出现,脚本立即终止,结束所有执行。并且可以在结束前输出一段字符串。
sleep():延迟脚本执行,暂停一段时间,以秒为单位。最大执行周期为30秒,可以被配置,在php.ini文件中 max_execution_time = 30
如果在参数列表内,有部分参数存在默认值,但是部分不存在,则将有默认值的参数放在形参列表后边完成。
func_get_args():得到函数内的所有实参。
$GLOBALS:预定义变量
专门为用户数据超全局化的一个预定义变量。
不同于其他的超全局变量:
每个全局变量,自动地 与 $GLOBALS内的一个元素相对应。
增加一个全局变量,则自动在$GLOBALS内增加一个同名元素!反之亦然!
$v1 = 10;
var_dump($GLOBALS['v1']);
$GLOBALS['v2'] = 20;
var_dump($GLOBALS['V2']);
global的作用是
声明一个局部变量,并将其初始化为同名全局变量的一个引用!
匿名函数的作用
典型的匿名函数可以作为临时函数来使用。例如,有些内部函数,需要调用某个函数来完成操作!像:array_map():返回数组 = array_map('函数',数组); 对某个数组内的所有元素利用提供的函数做操作!
凡是参数需要 callback(callable)地方,都是通过传递匿名函数完成!
PHP数组指针问题
指针函数
php有:获得指针指向的数组元素的键和值的能力!利用函数:
current(),获得当前元素的值
key():获得当前元素的键。如果指针已经非法,返回NULL。用来判断是否存在元素了
还应该有:将指针移动的能力!
next():可以完成指针的移动!
数组函数:
range():可以得到某个范围内的元素数组。
array_merge('$arr1','$arr2',...):数组合并,合并多个。
下标重复会怎么样?
数值索引:完全重新索引!
字符下标:后出现的元素值会覆盖前面的元素值!
array_rand(数组,个数):随机地从数组内取得元素,取得是下标!如果多个,返回随机下标的集合!结果是被排序之后的,从小到大!
shuffle(&$arr):打乱数组内元素的顺序。注意,参数为引用传递!会打乱原数组。
键值操作:
array_keys(): 取得所有的键。
array_values():取得所有的值。
in_array():是否存在某个值。
array_key_exists():某个键是否存在。
array_combine('键数组','值数组'): 利用两个数组合并成一个数组,其中一个作为键,另一个作为值!
array_fill('第一个索引值','数量','值'):填充数组。
数组 = array_fill(起始下标,填充的元素个数,填充的值);
array_chunk():拆分数组,原则是子数组内的元素个数!
array_intersect($arr1, $arr2):计算两个数组的交集,找到在$arr1中存在,并也在$arr2中存在的元素,数据是出现在第一个参数中的。
array_diff($arr1, $arr2):计算两个数组的差集。找到在arr1中存在,但是在arr2中不存在的元素!
数组模拟栈和队列:
桟 和 队列 都是典型数据结构,都是 list 列表的一种。
入栈:array_push(),在数组的尾端将数据压入数组。
出栈:array_pop(),在栈顶输出元素。
array_push()与array_pop()会重新索引,保证所有的元素都是由0开始的逐一递增。
入队:array_push(),在数组的尾端将数据压入数组。
出队:array_shift(),在数组的顶端,将数据取出。
array_unshift(),可以将数据由数组的顶端压入数组。
数组排序函数
排序函数都是引用传值!
r:reverse,反转 。a:association,关联。u:user,用户自定义。
sort('数组'): 按照值,升序,不保持键值关联。
rsort('数组'): 按照值,降序,不保持键值关联。
asort('数组'): 按照值,升序,保持键值关联。
arsort('数组'): 按照值,降序,保持键值关联。
ksort('数组'): 按照键,升序,保持键值关联。
krsort('数组'): 按照键,降序,保持键值关联。
natsort('数组'): 自然数排序,可以利用计算出来的自然数,对数据进行排序!
usort('数组'): 自定义排序,用户自定义的元素之间的大小关系。用户提供一个比较两个元素大小的函数,并可以告知php元素的大小关系。用户所定义的函数,负责告知usort()两个元素之间的大小关系,而usort得到关系之后,负责完成排序!利用返回值告知!
升序的返回效果:
返回负数,表示第一个元素小;
返回正数,表示第一个元素大;
返回0,表示相等。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境