PHP中如何在$message变量内嵌入if语句?报错问题修复
修复PHP字符串拼接中嵌入if语句的报错问题
你的代码报错核心原因是:PHP不允许在字符串链式拼接(用.连接)的过程中直接插入if流程控制语句,if是语句而非表达式,不能放在拼接链里作为一部分。下面给你三种可行的修复方案:
方案1:使用三元运算符简化分支逻辑
把重复的性别判断抽成变量,用三元运算符替代if-else,直接嵌入拼接链:
// 先定义前缀变量,避免重复判断 $prefix = $getNowCuti->AllKaryawan->jenis_kelamin == 'L' ? 'Pak' : 'Bu'; $message = "Semangat Pagi Akang & Teteh Semua!\n" . "Nyai Iteung mengucapkan selamat ulang tahun 💬 untuk:\n\n" . $prefix . $stringKaryawan . "\n\n" . "Selamat cuti juga yaa untuk:\n\n" . $prefix . $stringKaryawan . "\n\n" . "Harap rekan-rekan Kabayan Group tidak memberikan tugas kepada pegawai diatas pada hari ini.";
方案2:分步拼接字符串
先初始化基础字符串,再通过if分支用.=追加内容,符合PHP语法规范:
// 初始化基础内容 $message = "Semangat Pagi Akang & Teteh Semua!\n" . "Nyai Iteung mengucapkan selamat ulang tahun 💬 untuk:\n\n"; // 追加生日祝福的前缀和姓名 if($getNowCuti->AllKaryawan->jenis_kelamin == 'L') { $message .= "Pak" . $stringKaryawan . "\n\n"; } else { $message .= "Bu" . $stringKaryawan . "\n\n"; } // 追加休假祝福的开头 $message .= "Selamat cuti juga yaa untuk:\n\n"; // 追加休假祝福的前缀和姓名 if($getNowCuti->AllKaryawan->jenis_kelamin == 'L') { $message .= "Pak" . $stringKaryawan . "\n\n"; } else { $message .= "Bu" . $stringKaryawan . "\n\n"; } // 追加结尾提示 $message .= "Harap rekan-rekan Kabayan Group tidak memberikan tugas kepada pegawai diatas pada hari ini.";
方案3:使用HEREDOC语法(推荐)
HEREDOC支持直接编写多行字符串,还能嵌入变量,代码更整洁易读:
$prefix = $getNowCuti->AllKaryawan->jenis_kelamin == 'L' ? 'Pak' : 'Bu'; $message = <<<MSG Semangat Pagi Akang & Teteh Semua! Nyai Iteung mengucapkan selamat ulang tahun 💬 untuk: $prefix$stringKaryawan Selamat cuti juga yaa untuk: $prefix$stringKaryawan Harap rekan-rekan Kabayan Group tidak memberikan tugas kepada pegawai diatas pada hari ini. MSG;
注意:HEREDOC的结束标记
MSG;必须单独占一行,且前面不能有任何缩进。
内容的提问来源于stack exchange,提问作者slvhxia
相关产品推荐
相关产品推荐

