主頁 > 知識庫 > php7 參數(shù)、整形及字符串處理機制修改實例分析

php7 參數(shù)、整形及字符串處理機制修改實例分析

熱門標簽:地圖標注符號樣式有 電子地圖標注怎么修改 如何在世界地圖標注 梧州市機器人外呼系統(tǒng)怎么樣 天客通地圖標注 廈門400電話辦理選易號網(wǎng) 臨沂crm外呼系統(tǒng)平臺 公司外呼系統(tǒng)中心 菏澤語音外呼系統(tǒng)運營商

本文實例講述了php7 參數(shù)、整形及字符串處理機制修改。分享給大家供大家參考,具體如下:

參數(shù)處理機制修改

一、重復參數(shù)命名不再支持。

重復的參數(shù)命名不再支持。比如下面的代碼執(zhí)行的時候會報錯:

public function foo($a, $b, $unused, $unused) {
// ... 
}

編者按:應該沒有人這樣用吧。

二、func_get_arg和func_get_args()調(diào)整

func_get_arg()和func_get_args()這兩個方法返回參數(shù)當前的值,而不是傳入時的值。當前的值有可能會被修改  

function foo($x) {
   $x++;
   var_dump(func_get_arg(0));
}
foo(1);

上面的代碼會打印2, 而不是1。如果想打印原始的值,調(diào)用的順序調(diào)整下即可。

三、同樣在打印異常回溯信息的時候也是顯示修改后的值。

function foo($x) {  
 $x = 42;
 throw new Exception; 
} 
foo("string"); 

PHP7的運行結(jié)果:

Stack trace:
#0 file.php(4): foo(42)
#1 {main} 

PHP5的運行結(jié)果:

Stack trace:
#0 file.php(4): foo('string')
#1 {main}

這個調(diào)整不會影響代碼的行為,不過在調(diào)試的時候需要注意這個變化。

其他和參數(shù)有關(guān)的函數(shù)都是同樣的調(diào)整,比如debug_backtrace() .

整型處理機制修改

一、無效八進制數(shù)字會報編譯錯誤

無效的八進制數(shù)字(包含大于7的數(shù)字)會報編譯錯誤,比如下面的代碼會報錯:     

$i = 0781; // 8 is not a valid octal digit!
[點擊并拖拽以移動]

老版本的PHP會把無效的數(shù)字忽略。

二、位移負的位置會產(chǎn)生異常

var_dump(1 >> -1); // ArithmeticError: Bit shift by negative number

三、左位移如果超出位數(shù)返回0

var_dump(1  64); // int(0)

老版本的PHP運行結(jié)果和cpu架構(gòu)有關(guān)系。比如x86會返回1。

四、右位移超出會返回0或者-1.

var_dump(1 >> 64); // int(0)
var_dump(-1 >> 64); // int(-1)

字符串處理機制修改

一、含有十六進制字符的字符串不再視為數(shù)字

含有十六進制字符的字符串不再視為數(shù)字,也不再區(qū)別對待。比如下面的代碼:

var_dump("0x123" == "291");   // bool(false)   (previously true) 
var_dump(is_numeric("0x123")); // bool(false)   (previously true) 
var_dump("0xe" + "0x1");    // int(0)     (previously 16) 
var_dump(substr("foo", "0x1")); // string(3) "foo" (previously "oo") 
// Notice: A non well formed numeric value encountered

可以使用filter_var函數(shù)來檢查一個字符串是否包含十六進制字符或者是否可以轉(zhuǎn)成一個整型

$str = "0xffff"; 
$int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX); 
if (false === $int) {   
throw new Exception("Invalid integer!"); 
}
var_dump($int); // int(65535)

二、\u{后面如果包含非法字符會報錯

雙引號和heredocs語法里面增加了unicode 碼點轉(zhuǎn)義語法,“\u{”后面必須是utf-8字符。如果是非utf-8字符,會報錯:

$str = "\u{xyz}"; // Fatal error: Invalid UTF-8 codepoint escape sequence

可以通過對第一個\進行轉(zhuǎn)義來避免這種錯誤。

$str = "\\u{xyz}"; // Works fine

“\u”后面如果沒有{,則沒有影響:

$str = "\u202e"; // Works fine

PHP IntlChar()

PHP 7 通過 intl 擴展來支持國際化 (i18n) 和本地化 (l10n) 。此擴展僅僅是對 ICU 庫的基礎包裝,并提供了和 ICU 庫類似的方法和特性。

PHP 7 通過新的 IntlChar 類暴露出 ICU 中的 Unicode 字符特性。這個類自身定義了許多靜態(tài)方法用于操作多字符集的 unicode 字符。

實例

?php 
printf('%x', IntlChar::CODEPOINT_MAX); 
echo IntlChar::charName('@'); 
var_dump(IntlChar::ispunct('!')); 
?>

以上程序執(zhí)行輸出結(jié)果為:

10ffff
COMMERCIAL AT
bool(true)

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php常用函數(shù)與技巧總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP常用字符串函數(shù)用法實例總結(jié)
  • php生成隨機數(shù)/生成隨機字符串的方法小結(jié)【5種方法】
  • php字符串函數(shù) str類常見用法示例
  • php變量與字符串的增刪改查操作示例
  • PHP數(shù)組與字符串互相轉(zhuǎn)換實例
  • php將字符串轉(zhuǎn)換為數(shù)組實例講解
  • php反序列化長度變化尾部字符串逃逸(0CTF-2016-piapiapia)
  • PHP字符串與數(shù)組處理函數(shù)用法小結(jié)
  • PHP生成隨機字符串實例代碼(字母+數(shù)字)
  • PHP中將一個字符串部分字符用星號*替代隱藏的實現(xiàn)代碼
  • php常用經(jīng)典函數(shù)集錦【數(shù)組、字符串、棧、隊列、排序等】
  • PHP入門學習之字符串操作

標簽:黃石 瀘州 白城 綿陽 郴州 迪慶 貴陽 雞西

巨人網(wǎng)絡通訊聲明:本文標題《php7 參數(shù)、整形及字符串處理機制修改實例分析》,本文關(guān)鍵詞  php7,參數(shù),整形,及,字符串,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php7 參數(shù)、整形及字符串處理機制修改實例分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于php7 參數(shù)、整形及字符串處理機制修改實例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章