Сортировка проблемы понимания в многомерном массиве в переполнении стека

Я пытаюсь отсортировать многомерный массив. Массив содержит Город & Население. Они отображаются в таблице. Я хочу отсортировать столбец Население в порядке возрастания. Я понимаю, что процедура sort($array_variable), но я не знаю, как распечатать их после сортировки. Пожалуйста, помогите мне просветить в этом вопросе. Программа выглядит следующим образом

<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>

Извините за длинную программу, нуб здесь. Как вы видите. Я дал sort() функция, но она не дает желаемого результата. Спасибо.

введите описание изображения здесь

0

Решение

Просто используйте цикл, чтобы распечатать данные. Также я бы создал класс City и использовать usort сравнить на основе population имущество. Что-то вроде этого:

<?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>';

}
2

Другие решения

Пожалуйста, попробуй

<?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),
);

usort($data, function($a, $b) {
return $a[2] - $b[2];
});
?>
<table>
<tr>
<th>City</th>
<th>State</th>
<th>Population</th>
</tr>
<?php
$totalPopulation=0;
foreach($data as $d)
{
?>
<tr>
<td><?php echo $d[0];?></td>
<td><?php echo $d[1];?></td>
<td><?php echo $d[2];?></td>
</tr>
<?php
$totalPopulation = $totalPopulation+$d[2];
}
?>
<tr><td>Total Population</td><td colspan="2"><?php echo $totalPopulation; ?></td></tr>
</table>
1

Пытаться:

<table>
<tr>
<th> City </th>
<th> State </th>
<th> Population </th>
</tr>
<?php
$totalPop = 0;
foreach($data as $d) { ?>
<tr>
<th> <?php echo $d[0]; ?> </th>
<th> <?php echo $d[1]; ?> </th>
<th> <?php echo $d[2]; $totalPop += $d[2]; ?> </th>
</tr>
<?php } ?>
<tr>
<td colspan="2"> Total Population is: </td>
<td><?php echo $totalPop; ?></td>
</tr>

</table>
1
По вопросам рекламы [email protected]