Как изменить переменную, назначаемую через условие? - PullRequest
1 голос
/ 07 июня 2011

Я хочу изменить присваиваемую переменную в зависимости от условия, и мне кажется, что она работает.

$condition = false;

($condition !== false ? $array[1][$condition] : $array[1]) = 'Test';

В этом примере, если $ condition не false, я хочу присвоить строку «Test» для $ array [1] [$ condition]. В противном случае присвойте его $ array [1]

Я легко могу сделать это так:

if ($condition !== false) {
    $array[1][$condition] = 'Test'; }
else {
    $array[1] = 'Test'; }

Но из-за природы кода это может быть довольно загромождено, поэтому я хочу, чтобы это было встроенное условное выражение.

Спасибо за любую помощь!

Ответы [ 3 ]

1 голос
/ 07 июня 2011
$condition = false;

$array[1][$condition] = ($condition !== false ? 'Test' : $array[1]);
0 голосов
/ 07 июня 2011

Результат троичного оператора не является ссылкой , поэтому его нельзя использовать в качестве левой части присваивания.

Возможно, вы сможете использовать переменнуюпеременные и ссылки, но это может только добавить сложности, не предоставляя никакой реальной выгоды.

Примерно так:

$a =& $array[1];
$b =& $array[1][$condition];

$var = ($condition !== false ? 'b' : 'a');
$$var = 'Test';
0 голосов
/ 07 июня 2011
$condition !== false ? $array[1][$condition] = "Test" : $array[1] = "Test";
...