как заменить эти простые операторы if else PHP функцией?

#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 Можете ли вы принять ответ, если в конечном итоге будете использовать мой код? Спасибо