三元条件运算中的“压缩”代码以将前缀添加到值

出于好奇......有没有办法以最短的形式(更少的php代码字符和重复)在单个语句中编写这种代码?例如,无需将部分重复document为字符串和变量。


if (empty($id)){

  $fileName = "document.pdf";

} else {

  $fileName = "document_$id.pdf"; // the "_" is important

}

如果我去掉下划线,我可以使用速记三元运算符:


$fileName = 'document'.(empty($id) ?: '').'.pdf';

如何在上述三元运算中包含下划线?


也许是“如果为真,则带有前缀连接的三元”运算符...


慕少森
浏览 159回答 3
3回答

MMTTMM

这是一个可能的解决方案,但它仍然重复$id引用......$fileName = 'document' . (!empty($id) ? '_' . $id : '') . '.pdf';

呼唤远方

既然你不想重复$id这是我设法写的最短的形式$fileName = str_replace('_.','.','document_'.($id?:'').'.').'pdf';至于empty()不要担心猫王操作员会做同样的工作。

红糖糍粑

尝试这个$fileName = rtrim('document' . '_' . $id, '_') . '.pdf';
打开App,查看更多内容
随时随地看视频慕课网APP