对数组数组中的数据重新排序

时间:2011-06-12 17:04:11

标签: php arrays sorting

我从包含多个字段的表单发布数据。一个表单需要向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 个答案:

答案 0 :(得分:1)

基本上,它就像将矩阵翻转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);

答案 1 :(得分:0)

他是您可能的解决方案。这假设两个行包含完全相同数量的键/值对,并且每个行的顺序相同。

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

其中$ row1是数组包含第一行中的所有数据,$ row2是包含第二行所有数据的数组。

foreach完成后,您的数据应在$ data数组中正确重新排序。