2016-07-07 8 views
0

多次元配列をソートしようとしています。配列には都市&が含まれています。これらは表に表示されます。Population列を昇順で並べ替える必要があります。私は、手順はsort($array_variable)であることを理解していますが、ソート後に印刷する方法はわかりません。このことについて教えてください。長いプログラムのため申し訳ありませんPHPでの多次元配列の理解問題のソート

<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',45), 
     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> 

、ここでのnoobを次のようにプログラムがあります。あなたが見ているように。私はsort()関数を与えましたが、望ましい出力が得られません。ありがとうございました。

enter image description here

答えて

2

を試してみてください。また、私はクラスCityを作成し、​​プロパティに基づいて比較するためにusortを使用します。このようなもの:

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

} 
+1

それは魅力のように働く、あなたの時間をありがとう。本当に感謝しております。 –

+0

@SandeepRoy助けて嬉しいです! – eol

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

お返事ありがとうございます。私は感謝します。 –

1

だけでデータをプリントアウトするためにループを使用し

<?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',45), 
    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> 
+0

ありがとうございます。それは魅力のように働く。 –

+0

いつでも歓迎します。 :) –