是否可以在定义字符串时使用内联if语句?

时间:2012-10-08 14:22:31

标签: php

我正在尝试构建一个HTML字符串,如下所示:

$html= "<input name='".GROUP_CONFIG_MAX_CALL_RECORDING_TIME_INPUT."' value='".$MaxCallRecordingTimeSecs."' size='4' ".($bCallRecordingLicensed)?'':'disabled'.">";

但它只是给我一个解析错误(没有具体细节,只是这一行是问题)。

我尝试了各种引号和括号的定位,但我总是得到解析错误。这可能是我正在尝试的方式吗?

4 个答案:

答案 0 :(得分:2)

$html= "<input name='".GROUP_CONFIG_MAX_CALL_RECORDING_TIME_INPUT."' value='".$MaxCallRecordingTimeSecs."' size='4' ".($bCallRecordingLicensed?'':'disabled').">";

像encodebiz所说,这应该与额外的括号一起使用。我会用sprintf来寻找更具可读性的版本:

$html = sprintf( 
   '<input name="%s" value="%s" size="4"%s>',
   GROUP_CONFIG_MAX_CALL_RECORDING_TIME_INPUT,
   $MaxCallRecordingTimeSecs,
   ( $bCallRecordingLicenced ? '' : ' disabled' )
);

答案 1 :(得分:0)

尝试

".(($bCallRecordingLicensed)?'':'disabled').">";

其他括号

答案 2 :(得分:0)

我认为是因为你更改了引号:

例如

$test = false;
$strings = "hello ".($test?"you":"")." this is a test";
echo $strings;

按预期工作。

我确实发现没有括号围绕测试,例如,我的测试只产生了“你”这个词而不是整个字符串 - 这很奇怪。

答案 3 :(得分:0)

尝试将整个三元包装在parens中,而不仅仅是开头的变量:

$html= "<input name='".GROUP_CONFIG_MAX_CALL_RECORDING_TIME_INPUT."' value='".$MaxCallRecordingTimeSecs."' size='4' ".($bCallRecordingLicensed?'':'disabled').">";