2011-06-12 86 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數組中正確地重新排序。