Есть ли сокращенная запись для инициализации ассоциативных массивов или объектов в PHP, например, введенная в JavaScript в ES2015? - PullRequest
1 голос
/ 24 января 2020

С ES2015, сокращенная запись для инициализации объекта была введена в JS в виде

let a = 'foo', b = 'bar', c = 'baz';
let o = {a, b, c};

// result:
{ a: "foo", b: "bar", c: "baz" }

Интересно, есть ли что-то подобное в PHP7, так что если бы у меня были переменные $a, $b и $c, я бы получил ассоциативный массив с ключами, соответствующими именам переменных и значениями их значений:

$a = 'foo'; $b = 'bar'; $c = 'baz';
// $o = ????

// expected result equal to
array('a' => $a, 'b' => $b, 'c' => $c)

1 Ответ

2 голосов
/ 24 января 2020

Как вы это сделали в JS, вы можете собрать все переменные по именам в массиве и выполнить compact () :

$a = 'foo'; $b = 'bar'; $c = 'baz';

$ar=['a','b','c'];
print_r(compact($ar));

Вывод:

Array
(
    [a] => foo
    [b] => bar
    [c] => baz
)

Или просто сделайте также compact('a', 'b', 'c');.

Демо

...