что-то пошло не так с моим кодом во время перестановки элементов $ _FILES - PullRequest
0 голосов
/ 10 января 2019

Я создал некоторый базовый скрипт для загрузки изображений через http / s, и, как вы все знаете, работать с массивом $ _FILES GLOBAL немного неудобно, поэтому я решил написать reArranger для массива $ _FILES GLOBAL. Я написал две функции для того же. но один из них не работает должным образом. Я не могу ознакомиться с этим недоразумением. ты можешь помочь мне узнать мою ошибку!?

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">&times;</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;

}

в классе загрузки есть 2 функции, которые переставляют элементы $ _FILES, но один из них (это reArrangeFiles) не возвращает корректно. что не так с моим функционалом?

Я хочу получить тот же результат, что и метод getImages. Я вырезал другую часть кода, потому что при создании вопроса меня просили не писать весь файл.

1 Ответ

0 голосов
/ 10 января 2019

Я переписал функцию, и теперь она должна работать так, как вы хотите:)

Если вы не хотите возвращать их в числовом массиве, замените $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;
}
...