dtra49684 2013-02-01 18:28
浏览 7
已采纳

如何为上传的文件使用“变量变量”? [关闭]

I'm trying to put uploaded files into cycle to reduce code.

<input type="file" name="new1[]" accept="image/*">
<input type="file" name="new2[]" accept="audio/*">
<input type="file" name="new3[]" accept="text/*">

And in php there's cycle for these files

<?php
 $all=array();
 $all[]=array('new1','Dir_for_1st_type_to_store');
 $all[]=array('new2','Dir for 2nd type');
 $all[]=array('new3','Dir for 3rd type');

 for($i=0;$i<count($all);$i++){
   $newFile=$$all[$i][0]; //that is VAR in VAR trick
   echo $newFile; //that's Ok. Temp files with paths displayed
   echo $newFile_name[$i]; //that's not Ok. No output

 ....................//here is a HUUUUUUGE amount of code, written for 'one file variable'
 }
?>

What's wrong?

  • 写回答

2条回答 默认 最新

  • douyi5822 2013-02-01 18:38
    关注

    Try this instead:

    HTML:

    <input type="file" name="new1[]" accept="image/*" multiple />
    <input type="file" name="new2[]" accept="audio/*" multiple />
    <input type="file" name="new3[]" accept="text/*" multiple />
    

    PHP:

    $map = Array(
        "new1"=>"Dir_for_1st_type_to_store",
        "new2"=>"Dir for 2nd type",
        "new3"=>"Dir for 3rd type",
    );
    foreach($map as $k=>$v) {
        $fileArray = $_FILES[$k];
        $keys = array_keys($fileArray["name"]);
        foreach($keys as $key) {
            $newFile = array_map(function($a) use ($key) {return $a[$key];},$fileArray);
            var_dump($newFile); // you should see temp filename and other file info
            var_dump($v); // this should be the target folder
            // do stuff with it
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?