PHP:使用表达式初始化数组

时间:2016-02-19 06:45:08

标签: php arrays initialization

我有一个简单的(在我看来)问题。我尝试在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' : ''))

此构造作为函数调用中的参数传递。所有变量都已定义。结果我得到typeidname已初始化,但value初始化为0.如果我注释掉+ ($disabled? '&disabled' : '')那么value也被初始化了。我试图将所有表达式括在括号中,结果相同 - 用0初始化。

有人有任何想法吗?

3 个答案:

答案 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 :(得分: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' : ''))

因为您正在使用+尝试添加数字,因为它无法找到它假设两个变量都为0 0+0=0

答案 2 :(得分: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);