【问题标题】:how to replace these simple if else PHP statements with a function?如何用函数替换这些简单的 if else PHP 语句?
【发布时间】:2021-01-05 00:40:25
【问题描述】:

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

【问题讨论】:

    标签: php if-statement optimization


    【解决方案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】:

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

        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”,然后自动将它们附加到末尾。

        【讨论】:

        • @Rookie PHP 如果您最终使用我的代码,您能接受答案吗?谢谢
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多