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


PHP: initialization of an array with expressions

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

有人知道吗?

您正在使用算术运算符来连接两个字符串,即 +而不是.

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);