【问题标题】:Better idea than triple nested switch?比三重嵌套开关更好的主意?
【发布时间】:2026-02-17 08:05:01
【问题描述】:

您好,我有一些表格用于通过 php 脚本上传文件,用户选择一个类别,而不是第二个子类别,然后是文件类型。

我必须将它上传到服务器上的正确目录中,路径看起来像 ..../category/sub-category/type/file.xxx --- 然后我将整个绝对路径放入我的数据库

现在我已经有了三重嵌套开关,还有其他更好的方法吗?

非常感谢!

有一张HTML代码和PHP的图片 --> http://oi59.tinypic.com/352qclx.jpg

【问题讨论】:

  • 只能从这里猜测,但是你是不是也在switch里面设置了category和subcategory,因为搭建路径不需要知道为什么可以选择的值在下拉菜单。

标签: php forms nested switch-statement


【解决方案1】:

不确定开关是在什么时候出现的。但是,您不能只在一个语句中执行以下操作吗?

$complete_filepath = "..../$category/$sub_category/$type/$filename";

【讨论】:

  • 这里无法发送代码,太长了,对不起,我是第一次来这里。
  • 您无需发送整个代码,只需发送相关的 sn-p。
  • 也太长了。我已经添加了一个截图,希望它是可读的。
  • 你为什么不把它贴在馅饼上或这里:gist.github.com 图像不可读。
  • 我以更好的方式做到了,找到更好的解决方案,无论如何,谢谢大家!
【解决方案2】:

可能是一个多维数组将帮助您解决它。像这样:

$arr_dir_conf = array("dir_conf" =>
    array("category1" => 
        array("sub_category1" =>
            array("type1" => "directory/category1/sub_category1/type1"),
            ...
            array("typen" => "directory/category1/sub_category1/typen")

        ), 
        ...
        array("sub_categoryn" =>
        ...
        ),
    ),
    ...
);

那么你只需像这样使用数组:

move_uploaded_files($_FILES['file']['tmp_name'], 
    $arr_dir_conf[$category][$subcategory][$type]);

【讨论】: