Php 重写if-else序列的更好方法
我想问一下,编写这一系列的Php 重写if-else序列的更好方法,php,Php,我想问一下,编写这一系列的if-else语句更好的方法是什么: $dir = base_url()."assets/produits/"; $img_src = $dir."none.png"; if (!empty($row->nShape)) { $nom = $row->nShape; if (file_exists($dir.$nom.".JPEG")) { $img_src = $dir.$nom.".JPEG"; } els
if-else
语句更好的方法是什么:
$dir = base_url()."assets/produits/";
$img_src = $dir."none.png";
if (!empty($row->nShape)) {
$nom = $row->nShape;
if (file_exists($dir.$nom.".JPEG")) {
$img_src = $dir.$nom.".JPEG";
}
else
if (file_exists($dir.$nom.".jpg")) {
$img_src = $dir.$nom.".jpg";
}
else
if (file_exists($dir.$nom.".jpeg")) {
$img_src = $dir.$nom.".jpeg";
}
}
全MVC模式
实施后:回答
查看文件
模型文件
您可以使用取自的函数,该函数忽略大小写:
function fileExists($fileName, $caseSensitive = true) {
if(file_exists($fileName)) {
return $fileName;
}
if($caseSensitive) return false;
// Handle case insensitive requests
$directoryName = dirname($fileName);
$fileArray = glob($directoryName . '/*', GLOB_NOSORT);
$fileNameLowerCase = strtolower($fileName);
foreach($fileArray as $file) {
if(strtolower($file) == $fileNameLowerCase) {
return $file;
}
}
return false;
}
现在您可以迭代:
$allowedExtensions = ["jpeg","jpg"];
foreach($allowedExtensions as $ext){
if(fileExists("youfFileName.$ext"),false){
//do your code..
}
}
您可能可以使用foreach
循环合并三个if
语句:
dir = base_url()."assets/produits/";
$img_src = $dir."none.png";
if (!empty($row->nShape)) {
$nom = $row->nShape;
$type = array(".JPEG", ".jpg", ".jpeg");
foreach ($type as $ext) {
if (file_exists($dir.$nom.$ext)) {
$img_src = $dir.$nom.$ext;
break;
}
}
}
通过向数组添加扩展名,可以显著减少冗余的if语句。如果无法标准化文件的保存方式,我可能会glob()
目录,并对结果数组进行不区分大小写的匹配。它显示none占位符,并且图像文件existsAddecho$img\u src代码>在$img\u src=$dir.$nom.$ext之后代码>并查看是否有任何输出。它显示了none.png
占位符我已经添加了MVC模式检查它。我已经添加了完整的代码,您可以检查我在添加我提到的回显行时所做的操作(介于$img_src=$dir.$nom.$ext;
和break
之间).但我可以在哪里确定指定的目录?只需发送完整路径“full/path/to/file/file.jpg”;fileExists知道如何使用dirname($fileName)在文件的文件夹内搜索;但是我不能在foreach循环中使用函数,请在问题中检查上面的问题为什么不能?我看不出无法重新声明fileExists()的原因(以前在C:\xampp\htdocs\dedax\u new\application\views\produits.php:9中声明)
function fileExists($fileName, $caseSensitive = true) {
if(file_exists($fileName)) {
return $fileName;
}
if($caseSensitive) return false;
// Handle case insensitive requests
$directoryName = dirname($fileName);
$fileArray = glob($directoryName . '/*', GLOB_NOSORT);
$fileNameLowerCase = strtolower($fileName);
foreach($fileArray as $file) {
if(strtolower($file) == $fileNameLowerCase) {
return $file;
}
}
return false;
}
$allowedExtensions = ["jpeg","jpg"];
foreach($allowedExtensions as $ext){
if(fileExists("youfFileName.$ext"),false){
//do your code..
}
}
dir = base_url()."assets/produits/";
$img_src = $dir."none.png";
if (!empty($row->nShape)) {
$nom = $row->nShape;
$type = array(".JPEG", ".jpg", ".jpeg");
foreach ($type as $ext) {
if (file_exists($dir.$nom.$ext)) {
$img_src = $dir.$nom.$ext;
break;
}
}
}