I am trying to sort a multidimensional array. The array contains City & Population. These are displayed in a table.I want to sort the Population column in a ascending order. I do understand, that the procedure is sort($array_variable)
, but i don't know how to print them after sorting. Please help me educating in this matter. The program is as follows
<html>
<head>
<style>
table, tr, td, th {
border:1px solid blue;
border-collapse: collapse;
}
</style>
</head>
<body>
<?php
$data=array (
array('New York','Washington',8008278),
array('Los Angeles','California',3694820),
array('Chicago','Illinois',2896016),
array('Houston','Texas',1953631),
array('Philadelphia','Philadelphia',1517550),
array('Pheonix','Arizona',1321045),
array('San Diego','California',1223400),
array('Dallas','Texas',188580),
array('San Antonio','Texas',144646),
array('Detroit','Michigan',951270),
);
print '<table>';
print '<th>'; print "City"; print '</th>';
print '<th>'; print "State"; print '</th>';
print '<th>'; print "Population"; print '</th>';
print '<tr>';
print '<td>'; print $data[0][0]; print '</td>';
print '<td>'; print $data[0][1]; print '</td>';
print '<td>'; print $data[0][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[1][0]; print '</td>';
print '<td>'; print $data[1][1]; print '</td>';
print '<td>'; print $data[1][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[2][0]; print '</td>';
print '<td>'; print $data[2][1]; print '</td>';
print '<td>'; print $data[2][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[3][0]; print '</td>';
print '<td>'; print $data[3][1]; print '</td>';
print '<td>'; print $data[3][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[4][0]; print '</td>';
print '<td>'; print $data[4][1]; print '</td>';
print '<td>'; print $data[4][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[5][0]; print '</td>';
print '<td>'; print $data[5][1]; print '</td>';
print '<td>'; print $data[5][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[6][0]; print '</td>';
print '<td>'; print $data[6][1]; print '</td>';
print '<td>'; print $data[6][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[7][0]; print '</td>';
print '<td>'; print $data[7][1]; print '</td>';
print '<td>'; print $data[7][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[8][0]; print '</td>';
print '<td>'; print $data[8][1]; print '</td>';
print '<td>'; print $data[8][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print $data[9][0]; print '</td>';
print '<td>'; print $data[9][1]; print '</td>';
print '<td>'; print $data[9][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td colspan=2>'; print "Total Population is:";
print '</td>';
print '<td>'; print $data[0][2]+$data[1][2]+$data[2][2]+$data[3][2]+$data[4][2]+$data[5][2]+$data[6][2]+$data[7][2]+$data[8][2]+$data[9][2]; print '</td>';
print '</tr>';
print '<tr>';
print '<td>'; print sort($data); print '</td>';
print '</tr>';
print '</table>';
?>
</body>
Sorry for the long program, a noob here. As you see. I have given a sort()
function, but it doesn't giving the desired output. Thank you.
Just use a loop to print out the data. Also I'd create a class City
and use usort
to compare based on the population
property. Something like this:
<?php
class City{
public $population;
public $name;
public $state;
public function __construct($name,$state,$population) {
$this->name = $name;
$this->state = $state;
$this->population = $population;
}
}
$data=array (
new City('New York','Washington',8008278),
new City('Los Angeles','California',3694820),
new City('Chicago','Illinois',2896016),
new City('Houston','Texas',1953631),
new City('Philadelphia','Philadelphia',1517550),
new City('Pheonix','Arizona',1321045),
new City('San Diego','California',1223400),
new City('Dallas','Texas',188580),
new City('San Antonio','Texas',144646),
new City('Detroit','Michigan',951270)
);
usort($data, function($a, $b)
{
return $a->population < $b->population;
});
print '<table>';
print '<tr>';
print '<th>'; print "City"; print '</th>';
print '<th>'; print "State"; print '</th>';
print '<th>'; print "Population"; print '</th>';
print '</tr>';
foreach($data as $currCity){
print '<tr>';
print '<td>'; print $currCity->name; print '</td>';
print '<td>'; print $currCity->state; print '</td>';
print '<td>'; print $currCity->population; print '</td>';
print '</tr>';
}