У меня простой (на мой взгляд) вопрос. Я пытаюсь инициализировать массив в 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.
У кого-нибудь есть идеи?
Вы используете арифметический оператор для объединения двух строк, т.е. +
вместо .
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
,
Для объединения строк используйте точку
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' : ''))
Я думаю, что код поможет вам много …
$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);