我有以下代码:
$r.="<$starttag";foreach($ATTR as $attr) $r.=" {$attr}"; $r.=">$a<$endtag> ";
我想写成这样:
$r.="<$starttag {@$ATTR, } >$a<$endtag>";
或以任何其他方式避免退出正在插值的字符串 PHP 中是否有类似的可能性或者有什么技巧可以做到这一点?
我会使用
sprintf
来完成此操作,因为在我看来,它使代码更易于阅读:
// data for testing
$ATTR = [
'attr1="attr1value"',
'attr2="attr2value"',
'attr3="attr3value"'
];
$starttag = "a";
$endtag = "a";
$a = "Value";
$r = "";
// end data for testing
$r .= sprintf(
"<%s %s>%s</%s>",
$starttag,
implode(" ", $ATTR),
$a,
$endtag
);
如果您不想走这条路,您可以对 $ATTR 数组的内爆值进行简单的连接,如下所示:
$r .= "<$starttag " . implode(" ", $ATTR) . ">$a<$endtag>";