Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/47: Рейтинг темы: голосов - 47, средняя оценка - 4.81
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
1

Поменять местами элементы массива

23.01.2016, 13:19. Показов 9777. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, подскажите как можно поменять местами элементы массива при выборе изображений для загрузки на сервер.


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if(!empty($_FILES['files'])){
            $uploaddir = 'uploaddir/img'. date("YmdHis");
            mkdir($uploaddir ,0755);
   foreach($_FILES['files']['tmp_name'] as $index => $tmpName)
    {
                                $someDestinationPath = $uploaddir.'/'.$_FILES['files']['name'][$index];
                                
      if(!empty($_FILES['files']['error'][$index]))
        {
                                                // some error occured with the file in index $index
            // yield an error here
            return false; // return false also immediately perhaps??
        } 
        // check whether it's not empty, and whether it indeed is an uploaded file
        if(!empty($tmpName) && is_uploaded_file($tmpName) )
        {
            // the path to the actual uploaded file is in $_FILES['image']['tmp_name'][$index]
            // do something with it:
            move_uploaded_file($tmpName, $someDestinationPath); // move to new location perhaps?
        }
    }
                header("Location: test.php");
                exit();
            }
?>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
    <html>
 
    <head>
        <meta charset='utf-8'>
        <title></title>
        <link rel="stylesheet" type="text/css" href="test.css" />
    </head>
 
    <body>
        <output id="list"></output>
        <br>
 
        <form action="" method="post" enctype="multipart/form-data">
            <input type="file" id="files" name="files[]" multiple />
            <br>
            <input type="submit" value="upload">
            <br>
        </form>
 
<!-- здесь скрипт -->
        
    </body>
 
    </html>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<script type="text/javascript">
            function handleFileSelect(evt) {
                var arrows = {
                    'left': '←',
                    'right': '→'
                };
                var files = evt.target.files; // FileList object
                // Loop through the FileList and render image files as thumbnails.
                for (var i = 0, f; f = files[i]; i++) {
                    // Only process image files.
                    if (!f.type.match('image.*')) {
                        continue;
                    }
                    var reader = new FileReader();
                    // Closure to capture the file information.
                    reader.onload = (function (theFile) {
                        return function (e) {
                            // Render thumbnail.
                            var div = document.createElement('div');
 
                            div.setAttribute('class', 'divtip peach-divtip');
                            div.setAttribute('data-text', theFile.name);
                            div.innerHTML = ['<div class="arrows">',
                                                         '<input type="button" value="',
                                                          arrows['left'], '">',
                                             '<input type="button" value="',
                                                                    arrows['right'], '">', '</div>',
                                          '<img class="imgprev" src="',
                                                       e.target.result,
                                                          '" title="',
                                                     theFile.name,
                                                              '"/>'
                                                        ].join('');
                            document.getElementById('list').insertBefore(div, null);
                        };
                    })(f);
                    // Read in the image file as a data URL.
                    reader.readAsDataURL(f);
                }
            }
            document.getElementById('files').addEventListener('change', handleFileSelect, false);
        </script>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
.imgprev {
        height: 200px;
        border: 1px solid #000;
        margin: 10px 5px 0 0;
    }
    
    .arrows {
        position: absolute;
        right: 5px;
        top: 10px;
    }
    
    .arrows > input[type=button] {
        width: 32px;
        height: 22px;
    }
.divtip:hover::after {
        content: attr(data-text);
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0px;
        z-index: 1000;
        text-align: center;
        font-size: 13px;
        padding: 5px 10px;
        height: auto;
        min-height: 50px;
        word-wrap: break-word;
    }
    
    .peach-divtip:hover::after {
        background: rgba(255, 209, 153, 0.8);
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2016, 13:19
Ответы с готовыми решениями:

Поменять местами пары соседних элементов массива
в одномерном массиве поменять местами пары соседних элементов, то есть если задано 1234, то на...

Поменять местами элементы в JSON
Добрый день. Подскажите пожалуйста как можно поменять заранее известные два элемента в JSON...

Поменять элементы местами
Доброго дня! Есть шаблон такого рода (подробности, не относящиеся к делу, опущены): &lt;table...

Поменять местами элементы массива А, имеющего нечётный индекс, на элементы массива В, имеющие чётный индекс, и найти минимальные элементы Амах и В мах
даны два массива А и В по 20 элементов в каждом. Поменять местами элементы массива А, имеющего...

16
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
23.01.2016, 20:06 2
Uurh, а по какому принципу вы хотите перемещать менять местами?
0
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
24.01.2016, 10:19  [ТС] 3
Два соседних элемента (первый если сдвинуть влево, то сменить местами с последним, а последний при сдвижении вправо, с первым)
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
24.01.2016, 13:43 4
Uurh, просто взять и перевернуть массив?
тогда посмотрите .reverse(), этот метод работает давно и надёжно
0
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
24.01.2016, 15:46  [ТС] 5
Не перевернуть нужно, а просто поменять местами два соседних элемента. Там такой интерфейс как на скрине К примеру: Нажимая на кнопку "вправо" (кнопка с стрелочкой) на первом изображении нужно поменять его местами в массиве со вторым изображением.
Миниатюры
Поменять местами элементы массива  
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
24.01.2016, 15:55 6
Лучший ответ Сообщение было отмечено Uurh как решение

Решение

Uurh,
Javascript
1
2
3
4
5
6
unction flipArr(arr, i) {
    var f = arr.slice(0, ++i),
        s = arr.slice(i),
        r = f.splice(-2).reverse();
    return f.concat(r).concat(s);
}
передаёте первым аргументом массив, вторым аргументом индекс элемента, который будет перемещаться вправо
1
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
24.01.2016, 18:14  [ТС] 7
а для перемещение влево?

Добавлено через 1 час 54 минуты
для перемещения влево будет
Javascript
1
2
3
4
5
6
function flipArr(arr, i) {
    var f = arr.slice(0, --i),
        s = arr.slice(i),
        r = f.splice(-2).reverse();
    return f.concat(r).concat(s);
}
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
24.01.2016, 19:37 8
Цитата Сообщение от Uurh Посмотреть сообщение
для перемещения влево будет
нет для перемещения влево будет так
Javascript
1
flipArr(arr,i-1)
Добавлено через 24 секунды
это уже чисто логическая вещь
0
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
25.01.2016, 16:33  [ТС] 9
Спасибо!
0
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
27.01.2016, 19:15  [ТС] 10
Цитата Сообщение от BANO Посмотреть сообщение
flipArr(arr,i-1)
Для перемещения влево, это не работает
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
27.01.2016, 20:03 11
а у меня почему-то всё совершенно спокойно делается
Изображения
 
1
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
28.01.2016, 16:36  [ТС] 12
а, вот так оо Спасибо.
Я не ожидал, что именно так работает. Просто странно, что "3-1" - это перемещение влево третьего элемента, а "2" перемещение второго вправо.

P.s просто из логики 3-1=2
0
j2FunOnly
28.01.2016, 22:23
  #13

Не по теме:

Тут модеры бывают? Как данная тема относится к регулярным выражениям?

0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
28.01.2016, 22:47 14

Не по теме:

j2FunOnly, привыкайте, тут какой-то магнит, и всех малознакомых с js тянет именно на непонятное название "регулярные выражения"))



Цитата Сообщение от Uurh Посмотреть сообщение
просто из логики 3-1=2
да, просто когда наглядно показываешь больше понимается
2
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
29.01.2016, 18:54  [ТС] 15

Не по теме:

А я не знаю, почему меня в "регулярные выражения" занесло



Цитата Сообщение от BANO Посмотреть сообщение
Цитата Сообщение от Uurh Посмотреть сообщение
просто из логики 3-1=2
да, просто когда наглядно показываешь больше понимается
Если честно, все равно, немного не понимаю, почему так выходит оо"
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.01.2016, 20:55 16
ну ладно
смотрите, когда мы передвигаем элемент вправо, мы его меняем местами с правым от него элементом
а если нам надо переместить левый элемент, то мы указываем, что мы хотим переместить левый элемент вправо, то есть тоже самое, но мы просто берём другую цель для перемещения
0
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
30.01.2016, 20:07  [ТС] 17
А, все понял. Спасибо.
0
30.01.2016, 20:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2016, 20:07
Помогаю со студенческими работами здесь

Поменять местами первый и последний элементы. Все единичные элементы массива заменить нулями
Люди добрые, помогите плиз с задачками. В массиве Р, размерности 150 150. поменять местами первый...

Найти первый минимальный и последний максимальный элементы массива. Поменять местами столбцы, содержащие эти элементы
Найти первый минимальный и последний максимальный элементы массива. Поменять местами столбцы,...

Поменять местами элементы массива
Подскажите каким образом в двумерном массиве можно поменять местами второй и предпоследний...

Поменять местами элементы массива
В заданном массиве размером N, которий образуется из случайных чисел, поменять местами первый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru