isset使用混合变量和字符串文字


isset using mixed variable with string literal

如何检查变量label_$value是否存在?

例如:

<?php foreach($status_values as $value => $label){ ?>
    <input type="radio" name="status" value="<?php echo $value; ?>" <?php if($status == $value){ echo ' checked="checked"'; }?> />
    <?php echo (isset("label_{$value}")) ? "label_{$value}" : $label; ?>
<?php } ?>

这会产生错误:分析错误:语法错误,isset 意外的"

但当我有时,我不会得到任何语法错误

<?php echo ("label_{$value}") ? "label_{$value}" : $label; ?>

所以我想:

  1. 检查变量是否存在:$label_foo
  2. 使用默认$label

您必须使用变量。使用

<?php
$label_test = "Hello";
$value = "test";
echo (isset(${"label_{$value}"})) ? "label_{$value}" : $label;
?>

这不是编译变量名的方式。尝试isset(${"label_$value"});