Перевести массив из одного вида в другой

192
11 октября 2018, 23:40

jQeury плагин собирает файлы (один или несколько) из формы и отправляет на сервер вот в таком виде:

Array
(
    [files] => Array
        (
            [name] => Array
                (
                    [0] => 9.jpg
                    [1] => 20ebee_orig.jpg
                )
            [type] => Array
                (
                    [0] => image/jpeg
                    [1] => image/jpeg
                )
            [tmp_name] => Array
                (
                    [0] => /tmp/phpS9olDU
                    [1] => /tmp/phpFSwT6A
                )
            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                )
            [size] => Array
                (
                    [0] => 59329
                    [1] => 106334
                )
        )
)

Как-то можно обработать на стороне сервера этот массив и привести его к вот такому виду (php 7+)?

Array
(
    [0] => Array
        (
            [name] => 9.jpg
            [type] => image/jpeg
            [tmp_name] => /tmp/php4VNlCO
            [error] => 0
            [size] => 59329
        )
    [1] => Array
        (
            [name] => 20ebee_orig.jpg
            [type] => image/jpeg
            [tmp_name] => /tmp/phpw4pTIR
            [error] => 0
            [size] => 106334
        )
)
Answer 1

Один из вариантов решения можно записать так:

$arr = Array(
    'files' => Array(
        'name' => Array(
            '9.jpg',
            '20ebee_orig.jpg'
        ),
        'type' => Array(
            'image/jpeg',
            'image/jpeg'
        ),
        'tmp_name' => Array(
            '/tmp/phpS9olDU',
            '/tmp/phpFSwT6A'
        ),
        'error' => Array(
            0,
            0
        ),
        'size' => Array(
            59329,
            106334
        )
    )
);
$result = [];
foreach ($arr as $values) {
    $keys = array_keys($values);
    $vals = array_values($values);
    do {
        foreach ($keys as $i => $key) {
            $temp[$key] = array_shift($vals[$i]);
        }
        $result[] = $temp;
    } while (! empty($vals[$i]));
}
var_dump($result);

Результат:

array (size=2)
  0 => 
    array (size=5)
      'name' => string '9.jpg' (length=5)
      'type' => string 'image/jpeg' (length=10)
      'tmp_name' => string '/tmp/phpS9olDU' (length=14)
      'error' => int 0
      'size' => int 59329
  1 => 
    array (size=5)
      'name' => string '20ebee_orig.jpg' (length=15)
      'type' => string 'image/jpeg' (length=10)
      'tmp_name' => string '/tmp/phpFSwT6A' (length=14)
      'error' => int 0
      'size' => int 106334
READ ALSO
Ошибка C2679 («не найден оператор…»)

Ошибка C2679 («не найден оператор…»)

Сохраняю с CSV файла в векторПосле этого нужно вывести 5 случайных людей:

340
Refused исключения для локального хоста

Refused исключения для локального хоста

Пытаюсь освоить pocoНо сбрасывается соединение к локальному хосту

159
Large string engaged exception

Large string engaged exception

Доброго времени суток!

416
Как из std::vector удалить диапазон элементов?

Как из std::vector удалить диапазон элементов?

Мне нужно написать програму которая с вектора удаляет диапазон значенийМой код:

166