LoginSignup
4
4

More than 5 years have passed since last update.

PHP7.0.5に変なバグがあった

Last updated at Posted at 2016-04-11

先日なんとなくbugs.php.netを眺めてたら、ずいぶん不可解なバグを見つけました。

function ref1(&$value) {
    $value = 'bar';
}
function ref2(&$value) {
    if($value==='foo'){
        $value = 'bar';
    }
}
function refswitch1(&$value) {
    switch($value){
    default:
        $value = 'bar';
        break;
    }
}
function refswitch2(&$value) {
    switch($value){
    case 'foo':
        $value = 'bar';
        break;
    }
}

$a = $b = $c = $d = 'foo';
ref1($a); ref2($b); refswitch1($c); refswitch2($d);
var_dump($a, $b, $c, $d);

結果はどうなるでしょう。
当然全てbarになりますね。

何故かPHP7.0.5の$dだけ'foo'になってます。
どういうことだってばよ。
まあ個人的には参照は一切使わないのでこのバグに遭遇することはないのですが。

なおPHP7.0.6で既に修正済です。

特に関係ないけどもうひとつ変なバグを紹介。
こちらはPHP7.0.3以降session_start()できなくなるというものですが、どうしてそこでエラーが出るのかさっぱりわかりません。
ちなみにsession_id()をコメントアウトするだけで発生しなくなります。
まるで意味がわからんぞ。

特に発展とかもなく、適当にバグを紹介するだけでこのエントリは終わり。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4