Переупорядочить данные в массиве массивов - PullRequest
0 голосов
/ 12 июня 2011

Я публикую данные из формы с несколькими полями. Одна форма должна отправить несколько строк в MySQL, т. Е.

Row1 -> Field1 Field2 Field3 Field4
Row2 -> Field1 Field2 Field3 Field4
etc...

Я создал массив массивов в следующем формате:

Array (
[0] => Array (
     [0] => Field1
     [1] => Field1 )
[1] => Array (
     [0] => Field2
     [1] => Field2 )
)

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

Array (
[0] => Array (
     [0] => Field1
     [1] => Field2 )
[1] => Array (
     [0] => Field1
     [1] => Field2 )
)

Какой лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 12 июня 2011

По сути, это все равно что перевернуть матрицу на 90 градусов (извините, не знаю правильный термин).Я не смог найти никакой встроенной функции, так что вот она - она ​​будет работать с ЛЮБЫМ числом строк и столбцов (включая тестовые данные).

<?php
// input data
$arr = array(
    array('field1-1', 'field1-2'),
    array('field2-1', 'field2-2'),
    array('field3-1', 'field3-2'),
    array('field4-1', 'field4-2'),
);

// some basic validations on input data
if (empty($arr) OR (!isset($arr[0])) OR (empty($arr[0])))
    die('empty or invalid source array');
// almost ready
$result = array();
$rowCount = count($arr[0]);
$fieldsCount = count($arr);
// go go go
for ($r = 0; $r < $rowCount; $r++)
{
    $row = array();
    for ($n = 0; $n < $fieldsCount; $n++)
    {
        $row[] = $arr[$n][$r];
    }
    $result[] = $row;
}

// results are in $result
print_r($result);
0 голосов
/ 12 июня 2011

Он возможное решение для вас. Предполагается, что обе строки содержат одинаковое количество пар ключ / значение и каждая из них находится в одинаковом порядке.

foreach ( $row1 as $key => $value )
  $data[$key] = array($row1[$key], $row2[$key]);

Где $ row1 - массив, содержащий все данные первой строки, а $ row2 - массив, содержащий все данные второй строки.

После завершения foreach ваши данные должны быть правильно упорядочены в массиве $ data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...