搜尋
首頁後端開發PHP7php7新特性之php7帶來的變更

php7新特性之php7帶來的變更

May 30, 2020 am 10:17 AM
php7

php7新特性之php7帶來的變更

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 = &#39;xy&#39;;
list($x, $y) = $str;

空的list()賦值不再允許

list() = [123];

list()現在也適用於陣列物件

list($a, $b) = (object)new ArrayObject([0, 1]);

6 .變數處理機制修改

對變數、屬性和方法的間接呼叫現在將嚴格遵循從左到右的順序來解析,而不是之前的混雜著幾個特殊案例的情況。下面這張表說明了這個解析順序的變化。

php7新特性之php7帶來的變更

引用賦值時自動建立的陣列元素或物件屬性順序和先前不同了

$arr = [];
$arr[&#39;a&#39;] = &$arr[&#39;b&#39;];$arr[&#39;b&#39;] = 1;
// php7: [&#39;a&#39; => 1, &#39;b&#39; => 1]
// php5: [&#39;b&#39; => 1, &#39;a&#39; => 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中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

DVWA

DVWA

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

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MantisBT

MantisBT

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