重新排列数组阵列中的数据
问题描述:
我从多个字段的表单发布数据。一个表单需要发送几行到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)
)
这样做的最佳方式是什么?
答
基本上,它就像翻转矩阵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
答
他是您可能的解决方案。这一个假定两行都包含完全相同数量的键/值对,并且每一个都是相同的顺序。
foreach ($row1 as $key => $value)
$data[$key] = array($row1[$key], $row2[$key]);
其中$ ROW1是数组包含了所有进入第一排和$ 2行是包含所有用于第二列的数据阵列中的数据。
一旦foreach完成,您的数据应该在$ data数组中正确地重新排序。
如果您要发布表单中的数据,为什么不直接从正确的格式发布数据? – konsolenfreddy 2011-06-12 17:13:09
表格的行数是可变的,所以可能有一组发布的字段或可能有10个发布集。 – 2011-06-12 17:15:53