2016-02-19 40 views
0

我有一个简单的问题(在我看来)。我尝试在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,idname初始化良好,但value初始化为0.如果我注释掉+ ($disabled? '&disabled' : '')然后value也被初始化。我试图用括号括起所有表达式 - 初始化为0.

有没有人有任何想法?

+3

会发生什么,当你改变'+'到'.'(点)? – roullie

回答

1

您正在使用算术运算符中的两个字符串的concatination即+代替.

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