php7.1+版本的變量類型坑提示

運(yùn)行代碼(留意$arr)

<?php
echo "PHP版本:" . phpversion();
$arr = "";
$arr2 = [];

function testArr(&$arr1) {
    $order['order_id'] = "222222aa";
    $arr1['order_id2'] = $order['order_id'];
}


testArr($arr);
testArr($arr2);

var_dump($arr,$arr2);

返回結(jié)果(PHP7.1之前版本代碼)

PHP版本:7.0.33
array(1) { ["order_id2"]=> string(8) "222222aa" } array(1) { ["order_id2"]=> string(8) "222222aa" }

返回結(jié)果(PHP7.1+版本)

PHP版本:7.1.28
Warning: Illegal string offset 'order_id2' in /data/lab/5vbld3wy/index.php on line 8
string(1) "2" array(1) { ["order_id2"]=> string(8) "222222aa" }

結(jié)果對(duì)比

對(duì)比兩個(gè)不同版本返回的結(jié)果。變量arr聲明是一個(gè)空字符串,但是在函數(shù)中將arr當(dāng)成數(shù)組使用。在7.1版本之前是不會(huì)有問(wèn)題的,返回結(jié)果是數(shù)組;7.1版本之后,會(huì)報(bào)一個(gè)Warning,變量的類型還是按照之前聲明的字符串類型

其他代碼測(cè)試

代碼1
<?php
echo "PHP版本:".phpversion();

$intVar = 100;

$stringVar = "php-test";

$arrVar = ['test' => php];

$boolVar = true;

var_dump($intVar = $stringVar);

var_dump($intVar = $arrVar);

var_dump($intVar = $boolVar);

var_dump($stringVar = $intVar);
返回結(jié)果1
PHP版本:5.6.40
Notice: Use of undefined constant php - assumed 'php' in /data/lab/5vbld3wy/index.php on line 8
string(8) "php-test" 
array(1) { ["test"]=> string(3) "php" } 
bool(true) 
bool(true)
PHP版本:7.1.28
Notice: Use of undefined constant php - assumed 'php' in /data/lab/5vbld3wy/index.php on line 8
string(8) "php-test" 
array(1) { ["test"]=> string(3) "php" } 
bool(true) 
bool(true)
PHP版本:7.3.4
Warning: Use of undefined constant php - assumed 'php' (this will throw an Error in a future version of PHP) in /data/lab/5vbld3wy/index.php on line 8
string(8) "php-test" 
array(1) { ["test"]=> string(3) "php" } 
bool(true) 
bool(true)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容