Решаю задачи с http://theory.phphtml.net PHP: <?php $arr = [1, 2, 4, 5, 5]; $arr = ($arr = array_unique($arr))[count($arr)-2]; var_dump($arr); ?> Выдает: Parse error: syntax error, unexpected '[' in F:\wamp64\www\My.php on line 3 Знаю как сделать, чтобы работало, но хотелось бы обойтись одной строчкой (чисто из эстетических соображений). Почему так не работает?
На 7.0.x проблем не должно быть http://sandbox.onlinephpfunctions.com/code/ec662ee391cab2b606c0beb9a1cccfb0ccf69367
PHP: $arr = [1,3,5,5,4,3,4]; sort($arr); $arr = array_reverse(array_unique($arr)); var_dump($arr[1] ?? $arr[0] ?? 0);
Самое забавное что нет,5.5.x - 5.6.x не работает судя по песочнице http://sandbox.onlinephpfunctions.com/code/3039ef402a9f5130c2d36ad62c6463baf6b75dac
Все работает, я на 5.6 активно уже юзал это вот все. --- Добавлено --- Если внимательно приглядеться,сломалось-то в другом месте. --- Добавлено --- Сломалось в foo()['bar']. До 7 нельзя было так адресовываться к результату вызова функции без промежуточного сохранения оного в переменную.
Код (Text): ($arr = array_unique($arr))[count($arr)-2] не работает именно эта конструкция, т.е. результат выполнения сам по себе не является массивом.
Ды нет, является. В версии нормальной код работает. Проблема именно в обращении таком. 7.0.1 уже понимает, чего от нее хотят. --- Добавлено --- Помню, был безумно рад, когда это в пых завезли наконец-то. Не хватало очень.
Ну, просто у вас был разговор про квадратные скобки, а твой апдейт к посту появился уже после того как я написал.