简体   繁体   English

PHP数组到HTML表按列排序

[英]php array to html table sort by columns

I have a php array that is output to a table. 我有一个输出到表的php数组。 But I need to sort the table by the first column, the second, third and fourth. 但是我需要按照第一列,第二列,第三列和第四列对表格进行排序。 Im not sure if I should use a function or ksort. 我不确定我应该使用函数还是ksort。 What I have is below. 我所拥有的如下。 I also seem to have some Notice: Use of undefined constants when I run it. 我似乎也有一些注意事项:运行它时使用未定义的常量。

<!DOCTYPE html>
<html>
<body>
<?php
$state=array
(
array('Alabama', 'Montgomery', 4779736, 23),
array('Alaska', 'Juneau', 710231, 47),
array('Arizona', 'Phoenix', 6329017, 18),
array('Arkansas', 'LittleRock', 2915918, 32),
array('California', 'Sacramento', 37253956, 1),
array('Colorado', 'Denver', 5029196, 22),
array('Connecticut', 'Hartford', 3518288, 29),
array('Delaware', 'Dover', 897934, 45),
array('Florida', 'Tallahassee', 18801310, 4),
array('Georgia', 'Atlanta', 9687653, 9),
array('Hawaii', 'Boise', 1360301, 42)
);

echo "<table border=\"5\" cellpadding=\"10\">";
echo'<tr>';
   echo('<th>' . State. '</th>');
   echo('<th>' . Capital. '</th>');
   echo('<th>' . Population. '</th>');
   echo('<th>' . Rank. '</th>');
 echo'</tr>';

for ($i=0; $i<11; $i++)
{echo('<tr>');
  for ($j=0; $j<4; $j++)
  {echo ('<td>' . $state[$i][$j] . '</td>');
  }
  echo('</tr>');
}
echo "</table>"

?>
</body>
</html>

This is my other try at the sort: 这是我的另一种尝试:

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
$states[] = array('state' => 'Georgia', 'capital' => 'Atlanta', 'rank' => 9);
$states[] = array('state' => 'Alaska', 'capital' => 'Juneau', 'rank' => 47);
$states[] = array('state' => 'Alabama', 'capital' => 'Montgomery', 'rank' => 23);
$states[] = array('state' => 'Hawaii', 'capital' => 'Boise', 'rank' => 42);

$capital = array();
foreach ($states as $key => $row)
{
    $capital[$key] = $row['capital'];
}
echo \array_multisort($capital, \SORT_DESC, $states);

?>
    </body>
</html>

This is what I have so far, but for some reason, the numbered columns (population and rank) arent sorting correctly in their tables: 到目前为止,这是我所拥有的,但是由于某种原因,编号的列(填充和等级)在其表中未正确排序:

<?php 
$states=array
(
array('state' =>  'Alabama', 'capital' => 'Montgomery', 'population' => 4779736, 'rank' =>  23),
array('state' => 'Alaska', 'capital' =>  'Juneau', 'population' => 710231, 'rank' =>  47),
array('state' => 'Arizona',  'capital' => 'Phoenix',  'population' =>6329017, 'rank' =>  18),
array('state' => 'Arkansas',  'capital' => 'LittleRock',  'population' =>2915918, 'rank' =>  32),
array('state' => 'California', 'capital' =>  'Sacramento', 'population' => 37253956, 'rank' =>  1),
array('state' => 'Colorado',  'capital' => 'Denver', 'population' => 5029196,  'rank' => 22),
array('state' => 'Connecticut', 'capital' =>  'Hartford', 'population' => 3518288, 'rank' =>  29),
array('state' => 'Delaware',  'capital' => 'Dover',  'population' =>897934, 'rank' =>  45),
array('state' => 'Florida',  'capital' => 'Tallahassee', 'population' => 18801310, 'rank' =>  4),
array('state' => 'Georgia', 'capital' =>  'Atlanta', 'population' => 9687653,  'rank' => 9),
array('state' => 'Hawaii',  'capital' => 'Boise', 'population' => 1360301, 'rank' =>  42)
);


//Create index rows
foreach ($states as $row) {
  foreach ($row as $key => $value){
    ${$key}[]  = $value; //Creates $volume, $edition, $name and $type arrays.
  }  
}
echo '<h2>Below is the initial table</h2>';
echo "<table border=\"5\" cellpadding=\"10\">";
echo'<tr>';
   echo('<th> State </th>');
   echo('<th> Capital </th>');
   echo('<th> Population </th>');
   echo('<th> Rank </th>');
 echo'</tr>';
  foreach($states as $k => $val){ 
    echo "<tr> <td>".$val['state']."</td>
    <td>".$val['capital']."</td>
    <td>".$val['population']."</td>
    <td>".$val['rank']."</td></tr>  ";
  }
echo "</table>";


echo '<h2>Below is the State (first column) sort table - Ascending</h2>';
echo "<table border=\"5\" cellpadding=\"10\">";
echo'<tr>';
   echo('<th> State </th>');
   echo('<th> Capital </th>');
   echo('<th> Population </th>');
   echo('<th> Rank </th>');
 echo'</tr>';
 \array_multisort($state, \SORT_ASC, $states);
 foreach($states as $k => $val){ 
    echo "<tr> <td>".$val['state']."</td>
    <td>".$val['capital']."</td>
    <td>".$val['population']."</td>
    <td>".$val['rank']."</td></tr>  ";
  }
echo "</table>";


echo '<h2>Below is the Capital (second column) sort table - Descending</h2>';
echo "<table border=\"5\" cellpadding=\"10\">";
echo'<tr>';
   echo('<th> State </th>');
   echo('<th> Capital </th>');
   echo('<th> Population </th>');
   echo('<th> Rank </th>');
 echo'</tr>';
 \array_multisort($capital, \SORT_DESC, $states);
 foreach($states as $k => $val){ 
    echo "<tr> <td>".$val['state']."</td>
    <td>".$val['capital']."</td>
    <td>".$val['population']."</td>
    <td>".$val['rank']."</td></tr>  ";
  }
echo "</table>";


echo '<h2>Below is the Population (third column) sort table - Ascending</h2>';
echo "<table border=\"5\" cellpadding=\"10\">";
echo'<tr>';
   echo('<th> State </th>');
   echo('<th> Capital </th>');
   echo('<th> Population </th>');
   echo('<th> Rank </th>');
 echo'</tr>';
 \array_multisort($population, \SORT_ASC, $states);
 foreach($states as $k => $val){ 
    echo "<tr> <td>".$val['state']."</td>
    <td>".$val['capital']."</td>
    <td>".$val['population']."</td>
    <td>".$val['rank']."</td></tr>  ";
  }
echo "</table>";


echo '<h2>Below is the Rank (fourth column) sort table - Descending</h2>';
echo "<table border=\"5\" cellpadding=\"10\">";
echo'<tr>';
   echo('<th> State </th>');
   echo('<th> Capital </th>');
   echo('<th> Population </th>');
   echo('<th> Rank </th>');
 echo'</tr>';
 \array_multisort($rank, \SORT_DESC, $states);
 foreach($states as $k => $val){ 
    echo "<tr> <td>".$val['state']."</td>
    <td>".$val['capital']."</td>
    <td>".$val['population']."</td>
    <td>".$val['rank']."</td></tr>  ";
  }
echo "</table>";
?>
</body>
</html>

Use this code , i think this is what you want .. 使用此代码,我想这就是您想要的..

<?php 
$states=array
(
array('state' =>  'Alabama', 'capital' => 'Montgomery', 'population' => 4779736, 'rank' =>  23),
array('state' => 'Alaska', 'capital' =>  'Juneau', 'population' => 710231, 'rank' =>  47),
array('state' => 'Arizona',  'capital' => 'Phoenix',  'population' =>6329017, 'rank' =>  18),
array('state' => 'Arkansas',  'capital' => 'LittleRock',  'population' =>2915918, 'rank' =>  32),
array('state' => 'California', 'capital' =>  'Sacramento', 'population' => 37253956, 'rank' =>  1),
array('state' => 'Colorado',  'capital' => 'Denver', 'population' => 5029196,  'rank' => 22),
array('state' => 'Connecticut', 'capital' =>  'Hartford', 'population' => 3518288, 'rank' =>  29),
array('state' => 'Delaware',  'capital' => 'Dover',  'population' =>897934, 'rank' =>  45),
array('state' => 'Florida',  'capital' => 'Tallahassee', 'population' => 18801310, 'rank' =>  4),
array('state' => 'Georgia', 'capital' =>  'Atlanta', 'population' => 9687653,  'rank' => 9),
array('state' => 'Hawaii',  'capital' => 'Boise', 'population' => 1360301, 'rank' =>  42)
);


//Create index rows
foreach ($states as $row) {
  foreach ($row as $key => $value){
    ${$key}[]  = $value; //Creates $volume, $edition, $name and $type arrays.
  }  
}
array_multisort($state, SORT_ASC, $capital, SORT_ASC, $population, SORT_ASC, $rank , SORT_ASC,  $states);

echo "<table border=\"5\" cellpadding=\"10\">";
echo'<tr>';
   echo('<th> State </th>');
   echo('<th> Capital </th>');
   echo('<th> Population </th>');
   echo('<th> Rank </th>');
 echo'</tr>';

 foreach($states as $k => $val){ 

    echo "<tr> <td>".$val['state']."</td>
    <td>".$val['capital']."</td>
    <td>".$val['population']."</td>
    <td>".$val['rank']."</td></tr>  ";

  }

echo "</table>"

?>
</body>
</html>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM