#php #if-statement #optimization
#php #if-statement #оптимизация
Вопрос:
Как я могу улучшить или заменить эти операторы if else PHP на функцию, которая может принимать переменную имени файла для (например images/dogtypeX.jpg ) вместо того, чтобы жестко кодировать каждый отдельный тип собаки? Спасибо всем вашим мастерам PHP!
header('Content-type: image/jpg');
$dogtype = $_GET["dogtype"];
$dogname = $_GET["dogname"];
if($dogtype== "dogtype1")
{ $jpg_image = imagecreatefromjpeg('images/dogtype1.jpg');}
else if ($dogtype== "dogtype2")
{ $jpg_image = imagecreatefromjpeg('images/dogtype2.jpg');}
else if ($dogtype=="dogtype3")
{ $jpg_image = imagecreatefromjpeg('images/dogtype3.jpg');}
else if ($dogtype=="dogtype4")
{ $jpg_image = imagecreatefromjpeg('images/dogtype4.jpg');}
else if ($dogtype=="dogtype5")
{ $jpg_image = imagecreatefromjpeg('images/dogtype5.jpg');}
imagettftext($jpg_image, $dogtype, $dogname);
imagejpeg($jpg_image);
Ответ №1:
В вашем случае кажется, что вы можете сделать что-то очень простое, например :
header('Content-type: image/jpg');
$dogtype = $_GET["dogtype"];
$dogname = $_GET["dogname"];
supported_dogtypes = array("dogtype1", "dogtype2", "dogtype3"); // ...
if(in_array($dogtype, supported_dogtypes){
$jpg_image = imagecreatefromjpeg("images/$dogtype.jpg");
imagettftext($jpg_image, $dogtype, $dogname);
imagejpeg($jpg_image);
}
Ответ №2:
Вы можете просто передать имя файла в функции.
function dogType($dogtype){
$jpg_image = imagecreatefromjpeg("images/$dogtype.jpg");
// DO your other stuf..
}
//function call
$dogtype = $_GET["dogtype"];
dogType($dogtype);
Ответ №3:
Вы можете сопоставить номер «dogtype» с помощью preg_match, а затем автоматически назначить, какое изображение должно быть создано на основе этого.
header('Content-type: image/jpg');
$dogtype = $_GET["dogtype"];
$dogname = $_GET["dogname"];
$dog_type_number = preg_match('/d /', $dogtype, $matches, PREG_OFFSET_CAPTURE);
$dog_type_image = 'dogtype' . $matches[0][0];
$jpg_image = imagecreatefromjpeg("images/$dog_type_image.jpg");
imagettftext($jpg_image, $dogtype, $dogname);
imagejpeg($jpg_image);
Например, если имя изображения «dogtype124», preg_match найдет только цифры, то есть «124», а затем автоматически присоединит их к концу.
Комментарии:
1. @Rookie PHP Можете ли вы принять ответ, если в конечном итоге будете использовать мой код? Спасибо