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會把無效數字疏忽。 //位移負的位置會產生異常 vardump(1>>−1); //左位移超出位數則回來0 vardump(1<<64);//0 //右位移超出會回來0或許−1 vardump(100>>32);//0 vardump(−100>>32);//−1 3.參數處理機制修正 不支撐重復參數命名 functionfunc(b,c);會報錯 funcgetarg()和funcgetargs()這兩個方法回來參數當時的值,而不是傳入時的值,當時的值有或許會被修正 所以需求留意,在函數榜首行最好就給記錄下來,不然後續有修正的話,再讀取就不是傳進來的初始值了。 functionfoo(x){
KaTeX parse error: Expected 'EOF', got '}' at position 31: …_get_arg(0);
}̲
foo(1);//回來2…arr=[1,2,3];
foreach(KaTeX parse error: Expected 'EOF', got '&' at position 6: arras&̲val){
echocurrent(KaTeX parse error: Expected 'EOF', got '}' at position 19: …);//php7全回來0
}̲
按照值進行循環的時分,f…arr=[1,2,3];
foreach(arrasval){
unset(KaTeX parse error: Expected 'EOF', got '}' at position 12: arr[1]);
}̲var_dump(arr);
最新的php7仍舊會打印出[1,2,3]。(ps:7.0.0不可)
老的會打印出[1,3]
按照引證進行循環的時分,對數組的修正會影響循環
arr=[1]; foreach(arrasKaTeX parse error: Expected '}', got 'EOF' at end of input: …l){
var_dump(val);
KaTeX parse error: Expected 'EOF', got '}' at position 13: arr[1]=2;
}̲
最新的php7仍舊會追加…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)newArrayObject([0,1]); 6.變量處理機制修正 對變量、屬性和方法的間接調用現在將嚴格遵從從左到右的次序來解析,而不是之前的混雜着幾個特殊案例的情況。下面這張表說明了這個解析次序的改變。 20170616012239782.png 引證賦值時主動創立的數組元素或許目標屬性次序和曾經不同了 arr=[];
KaTeX parse error: Expected 'EOF', got '&' at position 10: arr['a']=&̲arr[‘b’];KaTeX parse error: Undefined control sequence: \e at position 271: …eplace()函數不再支撐“\̲e̲”(PREG_REPLACE_…parse。
9.curl_setopt設置項CURLOPT_SAFE_UPLOAD改變
TRUE禁用@前綴在CURLOPT_POSTFIELDS中發送文件。意味着@能夠在字段中安全得運用了。可運用CURLFile作爲上傳的替代。
PHP5.5.0中添加,默認值FALSE。PHP5.6.0改默認值爲TRUE。.PHP7刪除了此選項,有必要運用CURLFileinterface來上傳文件。