LINUX.ORG.RU

Поясните эту наркоманию

 , ,


0

1

Еще не вышел PHP 7.2, а уже идет полным ходом работа над следующими версиям. Например, в 7.3 реализована оптимизация sparse conditional constant propagation. Это позволяет интерпретатору упростить вот такую функцию:

Class C { public $i; }

function fn(int $x) { $c = new C;

$c->i = 1;

if ($x) { $a = [1, 2, 3]; } else { $a = [3, 2, 1]; }

return $a[$c-i];

$c->i++;

return $x; }

до вот такой:

function fn(int $x) { return 2;

}

function fn(int $x) {
    $c = new C;
    $c->i = 1;
    if ($x) {
        $a = [1, 2, 3];
    } else {
        $a = [3, 2, 1];
    }
    return $a[$c-i];
    $c->i++;
    return $x;
}

Так вот, как объект может использоваться в качестве индекса массива? Т.е. почему $a[$c-i] возвращает 2. А $a[$c]возвращает NULL. Это вообще как так?

sudo cast no-such-file

P.S. Взято отсюда https://habrahabr.ru/company/zfort/blog/339630/

★★★★★

Последнее исправление: Twissel (всего исправлений: 2)
Ответ на: комментарий от Noob_Linux

С такой авой, можно было пустым сообщением ответить

anonymous
()
Ответ на: комментарий от no-such-file

Да ладно, бывает. Заработался :-)

Я горел полторы минуты, потом погас)

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Да пусть висит. Мало ли кому поможет, кто из выдачи гугла придёт.

Все мы порой тупим, ничего в этом постыдного нет. :)

mono ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.