इससे पहले कि आप इसे फिर से आउटपुट कर सकें, आपको पहले सभी डेटा को एक अस्थायी सरणी में स्थानांतरित करना होगा। मैं आपको ऐसा करने के 2 तरीके बताऊंगा।
विधि 1:बस प्रत्येक पंक्ति को प्राप्त करें और पंक्ति अनुक्रमणिका को स्तंभ अनुक्रमणिका द्वारा स्विच करें:
<table>
<tr>
<th>Subject</th>
<th>year1</th>
<th>year2</th>
<th>year3</th>
</tr>
<?php
$mysqli = new mysqli('localhost', 'user', 'pass', 'database');
$id = 1;
$report = array();
$columnIndex = 0;
$query = $mysqli->query("SELECT HTML, CSS, Js FROM term WHERE Stdid='$id'");
while ($results = $query->fetch_assoc()) {
foreach ($results as $course => $score) {
$report[$course][$columnIndex] = $score;
}
$columnIndex++;
}
foreach ($report as $course => $results) { ?>
<tr>
<th><?php echo $course; ?></th>
<?php foreach ($results as $score) { ?>
<th><?php echo $score; ?></th>
<?php } ?>
</tr>
<?php } ?>
</table>
विधि 2:सभी पंक्तियों को एक सरणी में लाएं, ताकि यह सरणियों की एक सरणी बन जाए और array_map
का उपयोग करें कॉलबैक के साथ NULL
इसे स्थानांतरित करने के लिए (उदाहरण 4 को http://php.net/manual पर देखें /en/function.array-map.php
)। अंतिम परिणाम में उन्हें शामिल करने के लिए आपको प्रारंभिक सरणी में पाठ्यक्रम के नाम जोड़ने होंगे।
<table>
<tr>
<th>Subject</th>
<th>year1</th>
<th>year2</th>
<th>year3</th>
</tr>
<?php
$mysqli = new mysqli('localhost', 'user', 'pass', 'database');
$id = 1;
$data = array(array('HTML', 'CSS', 'Js'));
$query = $mysqli->query("SELECT HTML, CSS, Js FROM term WHERE Stdid='$id'");
while ($row = $query->fetch_assoc())
{
$data[] = $row;
}
$data = call_user_func_array('array_map', array_merge(array(NULL), $data));
?>
<?php
foreach ($data as $row): ?>
<tr>
<?php foreach ($row as $value): ?>
<th><?php echo $value?></th>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</table>