我仍然是PHP的新手,并编写以下代码片段作为创建电子邮件的较长代码的一部分。
这工作正常,但我想知道是否有办法让这更“自动化”,这样我就不必为每个文件手动编写它。 由于$ varCount显示了上传的文件数量,我只希望将它们添加为链接($ varLink)并用下面的逗号分隔,我想也许有一种方法可以避免编写所有这些情况。
我的代码(正常工作):
switch($varCount)
{
case '1':
$message.="<strong>Attachments:</strong> " . $varLink1 . "<br /><br />";
break;
case '2':
$message.="<strong>Attachments:</strong> " . $varLink1 . " , " . $varLink2 . "<br /><br />";
break;
case '3':
$message.="<strong>Attachments:</strong> " . $varLink1 . " , " . $varLink2 . " , " . $varLink3 . "<br /><br />";
break;
default:
$message.="<strong>Attachments:</strong> No files uploaded<br /><br />";
break;
}
感谢您提供任何帮助。
答案 0 :(得分:2)
$ varLink可以是所有链接的数组,例如:$varLinkArray
if (!empty($varLinkArray)){
$message.="<strong>Attachments:</strong> " . implode(", ",$varLinkArray) . "<br /><br />";
}else {
$message .= "<strong>Attachments:</strong> No files uploaded<br /><br />";
}
答案 1 :(得分:1)
如果数组中还没有$ varLink1变量,可以使用动态变量名称来引用它们:
$message .= "<strong>Attachments:</strong> ";
$links = [];
for ($i = 1; $i <= $varCount; $i++) {
$links[] = ${"varLink" . $i};
}
$message .= (count($links) == 0) ? "No files uploaded" : implode(" , ", $links);
$message .= "<br /><br />";
答案 2 :(得分:1)
有多种方法可以改善您的代码。
第一个是删除开关语句,而是使用if块。像这样:
$message .= "<strong>Attachments:</strong> ";
if ($varCount == 0) {
$message .= "No files uploaded";
} else {
$message .= $varLink1;
if ($varCount >= 2) {
$message .= ", " . $varLink2;
if ($varCount >= 3) {
$message .= ", " . $varLink3;
}
}
}
$message .= "<br /><br />";
如您所见,仍有一些冗余,可以使用arrays轻松删除。只需遍历数组,您甚至不再需要$varCount
:
// $varLinks is your array
$message .= "<strong>Attachments:</strong> ";
if (empty($varLinks)) {
$message .= "No files uploaded";
} else {
$message .= join(", ", $varLinks);
}
$message .= "<br /><br />";
join()
将通过在每个元素之间添加胶水(此处为", "
)来转换您的数组。
答案 3 :(得分:0)
如果链接不是某些预先构建的静态列表,那么这种功能最好用循环来处理。你会想要做的事情:
$message = "start of the string";
foreach ($vars as $var) {
$message .= "link for this particular $var";
}
$message .= "end of the string";
答案 4 :(得分:0)
除了默认情况外,这将产生问题代码的结果。
$aVlinks = array($varLink1,$varLink2,$varLink3);
$message .="<strong>Attachments:</strong> ";
$message .= implode(",",array_slice($aVlinks,0,$varCount));
$message .= "<br><br>";