PHP7帶來的變更
1.字串處理機制修正
含有十六進位字元的字串不再視為數字, 也不再區別對待.
var_dump("0x123" == "291"); // false var_dump(is_numeric("0x123")); // false var_dump("0xe" + "0x1"); // 0 var_dump(substr("f00", "0x1")) // foo
2.整數處理機制修改
Int64支援, 統一不同平台下的整數長度, 字串和檔案上傳都支援大於2GB.64位元PHP7字串長度可以超過2^31次方位元組.
// 无效的八进制数字(包含大于7的数字)会报编译错误 $i = 0681; // 老版本php会把无效数字忽略。 // 位移负的位置会产生异常 var_dump(1 >> -1); // 左位移超出位数则返回0 var_dump(1 << 64);// 0 // 右位移超出会返回0或者-1 var_dump(100 >> 32);// 0 var_dump(-100 >> 32);// -1
3.參數處理機制修改
#不支援重複參數命名
function func(b, c) {} ;會報錯
func_get_arg()和func_get_args()這兩個方法傳回參數目前的值, 而不是傳入時的值, 目前的值有可能會被修改
所以要注意,在函數第一行最好就給記錄下來,否則後續有修改的話,再讀取就不是傳進來的初始值了。
function foo($x) { $x++; echo func_get_arg(0); } foo(1); //返回2
4.foreach修改
foreach()迴圈對陣列內部指標不再運作
$arr = [1,2,3]; foreach ($arr as &$val) { echo current($arr);// php7 全返回0 }
#依照值進行循環的時候, foreach是對該數組的拷貝操作
$arr = [1,2,3]; foreach ($arr as $val) { unset($arr[1]); }var_dump($arr);
最新的php7依舊會印出[1,2,3]。 (ps:7.0.0不行)
老的會印出[1,3]
#依照引用進行循環的時候, 對陣列的修改會影響循環
$arr = [1]; foreach ($arr as $val) { var_dump($val); $arr[1]=2; }
最新的php7依舊會追加新增元素的循環。 (ps:7.0.0不行)
5. list修改
#不再依照相反的順序賦值
/ /$arr將會是[1,2,3]而不是之前的[3,2,1]
list($arr[], $arr[], $arr[]) = [1,2,3];
不再支援字串拆分功能
// $x = null 并且 $y = null $str = 'xy'; list($x, $y) = $str;
空的list()賦值不再允許
list() = [123];
list()現在也適用於陣列物件
list($a, $b) = (object)new ArrayObject([0, 1]);
6 .變數處理機制修改
對變數、屬性和方法的間接呼叫現在將嚴格遵循從左到右的順序來解析,而不是之前的混雜著幾個特殊案例的情況。下面這張表說明了這個解析順序的變化。
引用賦值時自動建立的陣列元素或物件屬性順序和先前不同了
$arr = []; $arr['a'] = &$arr['b'];$arr['b'] = 1; // php7: ['a' => 1, 'b' => 1] // php5: ['b' => 1, 'a' => 1]
7.雜項
1.debug_zval_dump() 現在印出「int」 替代「長」, 列印「float」 替代「double」
#2.dirname() 增加了可選的第二個參數, depth, 取得目前目錄向上depth 等級父目錄的名稱。
3.getrusage() 現在支援 Windows.mktime() and gmmktime() 函數不再接受 is_dst 參數。
4.preg_replace() 函數不再支援 “\e” (PREG_REPLACE_EVAL). 應使用 preg_replace_callback() 替代。
5.setlocale() 函數不再接受 category 傳入字串。應使用 LC_* 常數。
6.exec(), system() and passthru() 函數對NULL 增加了保護.
7.shmop_open() 現在傳回一個資源而非一個int, 這個資源可以傳給shmop_size(), shmop_write(), shmop_read(), shmop_close() 和shmop_delete().
8.為了避免記憶體洩露,xml_set_object() 現在在執行結束時需要手動清除$parse。
9.curl_setopt 設定項目CURLOPT_SAFE_UPLOAD變更
TRUE 停用 @ 前綴在 CURLOPT_POSTFIELDS 中傳送檔案。意味著 @ 可以在字段中安全得使用了。可使用 CURLFile作為上傳的取代。
PHP 5.5.0 中添加,預設值 FALSE。 PHP 5.6.0 改預設值為 TRUE。 . PHP 7 刪除了此選項, 必須使用 CURLFile interface 來上傳檔案。
推薦教學:《PHP7教學》
以上是php7新特性之php7帶來的變更的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

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