重新排列 $_FILES 的元素时我的代码出了点问题
something went wrong with my code while rearranging elements of $_FILES
我已经创建了一些基本脚本来通过 http/s 上传图片,而且大家都知道使用 $_FILES GLOBAL 数组有点不舒服,所以我决定写一个 reArranger
$_FILES 全局数组。我写了两个函数来做同样的事情。但其中一个无法正常工作。我无法熟悉那种误解。你能帮我找出我的错误吗!?
openserver 5.9,php7.2 apache2.4
这是一个索引
<!DOCTYPE html>
<html>
<head>
<title>Upload and Display post images</title>
<link href="style.css" type="text/css" rel="stylesheet">
</head>
<style>
</style>
<body>
<form action="receive.php" method="post" enctype="multipart/form-data" id="myModal" class="modal">
<div class="modal-content">
<span class="close">×</span>
Send these files:<br />
<input name="userfile[]" type="file" multiple="multiple" id="files"/><br /><br />
<input name="upload" id="submitUpload" type="submit" value="Send files" />
</div>
</form>
<br />
<br />
<!-- Trigger/Open The Modal -->
<button id="myBtn">Open Modal</button>
<script>
</script>
<script src="script.js"></script>
</body>
</html>
最后一个是upload.php
/* this function gets all images' names, and other variables in good format */
public function getImages($img = array()){
#$html = file_get_contents('phpinfo.php');
#printf($html);
#$html = substr($html, 4, 0);
#return $html;
for($i = 0; $i < @count($img['userfile']['name']); $i++) {
$this->img_arr[$i]['name'] = $img['userfile']['name'][$i];
$this->img_arr[$i]['type'] = $img['userfile']['type'][$i];
$this->img_arr[$i]['tmp_name'] = $img['userfile']['tmp_name'][$i];
}
return $this->img_arr;
}
protected function reArrangeFiles(array $files){
foreach($files['userfile'] as $name => $value){
#echo $name;
for($i=0;$i<count($files['userfile'][$name]);$i++ ){
$rearranged[$i][$name] = $files['userfile'][$name][$i];
}
}
return $rearranged;
}
在上传 class 中有 2 个函数重新排列 $_FILES 的元素,但其中一个(它是 reArrangeFiles)没有 return 正确。我的功能有什么问题?
我想获得与 getImages 方法相同的结果。我已经削减了代码的其他部分,因为在创建问题时我被要求不要写整个文件。
我重写了函数,现在它应该可以正常工作了:)
如果您不想 return 数值数组,请将 $rearranged[$filename][$k] = $value;
替换为 $rearranged[][$k] = $value;
protected function reArrangeFiles(array $files){
foreach ($files['userfile'] as $k => $filesArray) {
foreach($filesArray as $filename => $value) {
$rearranged[$filename][$k] = $value;
}
}
return $rearranged;
}
我已经创建了一些基本脚本来通过 http/s 上传图片,而且大家都知道使用 $_FILES GLOBAL 数组有点不舒服,所以我决定写一个 reArranger
$_FILES 全局数组。我写了两个函数来做同样的事情。但其中一个无法正常工作。我无法熟悉那种误解。你能帮我找出我的错误吗!?
openserver 5.9,php7.2 apache2.4
这是一个索引
<!DOCTYPE html>
<html>
<head>
<title>Upload and Display post images</title>
<link href="style.css" type="text/css" rel="stylesheet">
</head>
<style>
</style>
<body>
<form action="receive.php" method="post" enctype="multipart/form-data" id="myModal" class="modal">
<div class="modal-content">
<span class="close">×</span>
Send these files:<br />
<input name="userfile[]" type="file" multiple="multiple" id="files"/><br /><br />
<input name="upload" id="submitUpload" type="submit" value="Send files" />
</div>
</form>
<br />
<br />
<!-- Trigger/Open The Modal -->
<button id="myBtn">Open Modal</button>
<script>
</script>
<script src="script.js"></script>
</body>
</html>
最后一个是upload.php
/* this function gets all images' names, and other variables in good format */
public function getImages($img = array()){
#$html = file_get_contents('phpinfo.php');
#printf($html);
#$html = substr($html, 4, 0);
#return $html;
for($i = 0; $i < @count($img['userfile']['name']); $i++) {
$this->img_arr[$i]['name'] = $img['userfile']['name'][$i];
$this->img_arr[$i]['type'] = $img['userfile']['type'][$i];
$this->img_arr[$i]['tmp_name'] = $img['userfile']['tmp_name'][$i];
}
return $this->img_arr;
}
protected function reArrangeFiles(array $files){
foreach($files['userfile'] as $name => $value){
#echo $name;
for($i=0;$i<count($files['userfile'][$name]);$i++ ){
$rearranged[$i][$name] = $files['userfile'][$name][$i];
}
}
return $rearranged;
}
在上传 class 中有 2 个函数重新排列 $_FILES 的元素,但其中一个(它是 reArrangeFiles)没有 return 正确。我的功能有什么问题?
我想获得与 getImages 方法相同的结果。我已经削减了代码的其他部分,因为在创建问题时我被要求不要写整个文件。
我重写了函数,现在它应该可以正常工作了:)
如果您不想 return 数值数组,请将 $rearranged[$filename][$k] = $value;
替换为 $rearranged[][$k] = $value;
protected function reArrangeFiles(array $files){
foreach ($files['userfile'] as $k => $filesArray) {
foreach($filesArray as $filename => $value) {
$rearranged[$filename][$k] = $value;
}
}
return $rearranged;
}