eggyal 我没有回答我的问题。但这是我在 stackoverflow 上知道的唯一方法,可以重新发布代码作为对我最初问题的跟进。
无论如何,我试过你的链接。(即在 PHP 中转置多维数组)但是,它不适用于我的情况。
你可以自己试试看。我附加了两个功能来尝试这个。您只需要一个 mysql $dbh 连接来执行此功能。您会看到,在我的功能中,我利用了flipdiagonally
在该链接中被投票 24 次的功能。
当您调用设置为 $direction_v_or_h 的函数时,h,
它可以工作。但这对我们来说不是新闻。这是v
我追求的模式。
试试这样的限制
SQL_getview($dbh, "select * from yourTable limit 2","h");
和
SQL_getview($dbh, "select * from yourTable limit 2","v");
我得到的错误是这样的;对表中的每个字段重复
Warning: Invalid argument supplied for foreach() in D:\Hosting\5291100\html\blueprint\sql.php on line 739
function SQL_getview($dbh,$sql,$direction_v_or_h = 'h')
{
$result = $result = mysql_query($sql,$dbh);
$fields_num = mysql_num_fields($result);
if ($direction_v_or_h == "h"):
echo "<table border='1'><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysql_fetch_field($result);
echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
while($row = mysql_fetch_row($result))
{
echo "<tr>";
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
echo "</table>";
else:
if (1): //turn this to 0 to see the good old print_r workaround
echo "<table border='1'><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysql_fetch_field($result);
echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
$row = flipDiagonally($row);
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
echo "</table>";
else:
while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<pre>";
print_r ($row);
echo "</pre>";
echo "<hr>";
}
endif;
endif;
mysql_free_result($result);
}
function flipDiagonally($arr) {
$out = array();
foreach ($arr as $key => $subarr) {
foreach ($subarr as $subkey => $subvalue) {
$out[$subkey][$key] = $subvalue;
}
}
return $out;
}