如何用函数替换这些简单的PHP语句?

问题描述

我如何才能改进或替换这些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);

解决方法

就您而言,看来您可以做一些非常简单的事情,例如:

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);
}
,

您只需在函数中传递文件名。

function dogType($dogtype){
   $jpg_image = imagecreatefromjpeg("images/$dogtype.jpg");
// DO your other stuf..
}

//function call
$dogtype = $_GET["dogtype"];
dogType($dogtype);
,

您可以使用preg_match匹配“ dogtype”的编号,然后根据该编号自动分配要创建的图像。

header('Content-type: image/jpg');
$dogtype = $_GET["dogtype"];
$dogname = $_GET["dogname"];

$dog_type_number = preg_match('/\d+/',$matches,PREG_OFFSET_CAPTURE);
$dog_type_image = 'dogtype' . $matches[0][0];

$jpg_image = imagecreatefromjpeg("images/$dog_type_image.jpg");
imagettftext($jpg_image,$dogname);
imagejpeg($jpg_image);

例如,如果图像名称为“ dogtype124”,则preg_match将仅找到数字,即“ 124”,然后自动将它们附加在末尾。