2011-06-12 60 views
0

我从多个字段的表单发布数据。一个表单需要发送几行到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) 
) 

这样做的最佳方式是什么?

+1

如果您要发布表单中的数据,为什么不直接从正确的格式发布数据? – konsolenfreddy 2011-06-12 17:13:09

+0

表格的行数是可变的,所以可能有一组发布的字段或可能有10个发布集。 – 2011-06-12 17:15:53

回答

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); 
+0

工作完美!我一直在这个工作小时哈哈! – 2011-06-12 18:18:48

0

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

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

其中$ ROW1是数组包含了所有进入第一排和$ 2行是包含所有用于第二列的数据阵列中的数据。

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