我有多种不同的选项来分发一些记录。选项包括 Word、Excel、PDF 和电子邮件。
根据后端勾选的选项,前端将提供相应的选项进行共享。问题是我需要准备一份描述性文本作为此事的说明。各种情况的文本将是这样的:
您可以下载Word、Excel、PDF格式的选定记录,或发送 他们到您的电子邮件。 (当所有四个选项均启用时)。
您可以下载Word、PDF格式的选定记录,或发送至 你的邮件。 (当启用 Word、PDF 和电子邮件选项时)。
您可以下载Word或PDF格式的选定记录。 (当 Word 和 PDF 选项已启用)。
您可以在Word中下载选定的记录,或将它们发送到您的 电子邮件。 (当启用 Word 和电子邮件选项时)。
您可以将选定的记录发送到您的电子邮件。 (当只有电子邮件 已启用)。
还有其他组合,但棘手的情况是根本未启用电子邮件选项,或者仅启用电子邮件选项。在所有其他情况下,据我所知,除了最后一个之外的所有选项都应该用
,
连接,最后一个选项应该用 , or
与前面的选项连接。
启用所有选项时,顺序将始终相同:Word、Excel、PDF、电子邮件。
有人可以尝试生成一种算法来自动准备上述描述性文本,而不必采用所有不同的组合吗?
TIA。
编辑:可以存在多少种不同的组合?
没有什么技巧可讲,只是列出所有不同的分支。但只有当你有很多选择时,你才能减少代码量。 https://3v4l.org/fYcMc
function outputOptions(array $options){
if ($options[0] == 'email') {
echo "You can send the selected records to your email.";
} else {
echo "You can download the selected records in $options[0]";
$last = count($options) - 1;
if($last == 0)
echo '.';
else {
for($i = 1; $i < $last; $i++)
echo ", $options[$i]";
echo $options[$last] == 'email' ?
', or send them to your email.' :
", or $options[$last].";
}
}
echo "\n";
}
outputOptions(['Word']);
outputOptions(['Word', 'Excel']);
outputOptions(['Word', 'PDF']);
outputOptions(['Word', 'Excel', 'PDF']);
outputOptions(['email']);
outputOptions(['Word', 'email']);
outputOptions(['Word', 'Excel', 'email']);
outputOptions(['Word', 'PDF', 'email']);
outputOptions(['Word', 'Excel', 'PDF', 'email']);