php global 變量的詭異問題

<?php
$a = '123';
function c()
{
    global $a;
    ($d = $a) && ($a = "");
    return $d;
}

function d()
{
    global $a;
    $d = $a && $a = "456";
    return $d;
}

function e()
{
    global $a;
    $d = $a;
    $a = "456";
    return $d;
}


var_dump(c(), d(), e());

php7.4.21 && php7.4.28

string(3) "123"
bool(false)
string(0) "

需要使用phpdbg或者vld查看opcache

問題原因

  • 優先級問題
$d = $a && $a = "456";
被解析成$d = ($a && $a = '456');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章