PHP: инициализация массива с выражениями

У меня простой (на мой взгляд) вопрос. Я пытаюсь инициализировать массив в php следующим образом:

array(
'type' => 'hidden',
'id' => "request_params$suffix",
'name' => "request_params$suffix",
'value' => "?rule_id=$rule_id&cur_instr=$cur_instr&dev_id=$dev_id&cmd_id=$cmd_id" + ($disabled? '&disabled' : ''))

Эта конструкция передается как параметр в вызове функции. Все переменные определены. И в результате я получаю type, id а также name инициализируются хорошо, но value инициализируется с 0. Если я закомментирую + ($disabled? '&disabled' : '') тогда value инициализирован тоже. Я пытался заключить все выражения в круглые скобки с тем же результатом — инициализация с 0.

У кого-нибудь есть идеи?

0

Решение

Вы используете арифметический оператор для объединения двух строк, т.е. + вместо .

array(
'type' => 'hidden',
'id' => "request_params$suffix",
'name' => "request_params$suffix",
'value' => "?rule_id=$rule_id&cur_instr=$cur_instr&dev_id=$dev_id&cmd_id=$cmd_id" . ($disabled? '&disabled' : ''))

Потому что вы используете+ он пытается добавить числа и потому, что он не может найти, что он принимает обе переменные как 0, так 0+0=0,

1

Другие решения

Для объединения строк используйте точку

array(
'type' => 'hidden',
'id' => "request_params$suffix",
'name' => "request_params$suffix",
'value' => "?rule_id=$rule_id&cur_instr=$cur_instr&dev_id=$dev_id&cmd_id=$cmd_id" . ($disabled? '&disabled' : ''))
1

Я думаю, что код поможет вам много …

$disabled='';
$suffix='suffix';
$array=array(
'type' => 'hidden',
'id' => 'request_params'.$suffix,
'name' => 'request_params'.$suffix,
'value' => '?rule_id=$rule_id&cur_instr=$cur_instr&dev_id=$dev_id&cmd_id=$cmd_id'.($disabled? '&disabled' : '')
);

var_dump($array);
1
По вопросам рекламы [email protected]