在PHP中按自定义顺序显示数组数据

在PHP中按自定义顺序显示数组数据,php,arrays,sorting,Php,Arrays,Sorting,我想按自定义顺序显示数组数据 我的示例阵列是: ['a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e', 'f' => 'f',] 我尝试了以下代码: <table> <tr> <?php $count = 0; foreach ($support_others as $other) { echo "<td>"

我想按自定义顺序显示数组数据

我的示例阵列是:

['a' => 'a', 
'b' => 'b', 
'c' => 'c', 
'd' => 'd', 
'e' => 'e', 
'f' => 'f',]
我尝试了以下代码:

<table>
<tr>
<?php
    $count = 0;
    foreach ($support_others as $other) {
        echo "<td>" . $other ."</td>";
        $count++;
        if ((($count % 3) == 0) && ($count > 0)) {
            echo ("</tr><tr>");
        }
    }
?>
</tr>
</table>

其显示顺序为

a、b、c

d e f

但我想显示为:

d

b e

碳纤维


任何帮助都将不胜感激

对于这样的事情,我总是喜欢摆弄带有两个计数器的循环。查看此解决方案:

<?php

$support_others = [
  'a' => 'a', 
  'b' => 'b', 
  'c' => 'c', 
  'd' => 'd', 
  'e' => 'e', 
  'f' => 'f'
];

?>

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <table>

    <?php

      for ($i = 'a', $j = 'd'; $i < 'd', $j < 'g'; $i++, $j++) {
        echo '<tr>';
        echo '<td>' . $support_others[$i] . '</td>';
        echo '<td>' . $support_others[$j] . '</td>';
        echo '</tr>';
      }

    ?>

  </table>

</body>
</html>

有关更通用的版本,请参见此处:

<?php

    $columnOneStart = 'a';
    $columnOneEnd = 'c';

    $columnTwoStart = 'd';
    $columnTwoEnd = 'f';

      for ($i = $columnOneStart, $j = $columnTwoStart; $i <= $columnOneEnd, $j <= $columnTwoEnd; $i++, $j++) {
        echo '<tr>';
        echo '<td>' . $support_others[$i] . '</td>';
        echo '<td>' . $support_others[$j] . '</td>';
        echo '</tr>';
      }

?>

我总是喜欢在有两个计数器的循环中摆弄这样的东西。查看此解决方案:

<?php

$support_others = [
  'a' => 'a', 
  'b' => 'b', 
  'c' => 'c', 
  'd' => 'd', 
  'e' => 'e', 
  'f' => 'f'
];

?>

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <table>

    <?php

      for ($i = 'a', $j = 'd'; $i < 'd', $j < 'g'; $i++, $j++) {
        echo '<tr>';
        echo '<td>' . $support_others[$i] . '</td>';
        echo '<td>' . $support_others[$j] . '</td>';
        echo '</tr>';
      }

    ?>

  </table>

</body>
</html>

有关更通用的版本,请参见此处:

<?php

    $columnOneStart = 'a';
    $columnOneEnd = 'c';

    $columnTwoStart = 'd';
    $columnTwoEnd = 'f';

      for ($i = $columnOneStart, $j = $columnTwoStart; $i <= $columnOneEnd, $j <= $columnTwoEnd; $i++, $j++) {
        echo '<tr>';
        echo '<td>' . $support_others[$i] . '</td>';
        echo '<td>' . $support_others[$j] . '</td>';
        echo '</tr>';
      }

?>

在这种表显示中,关键是每行的元素数,它允许您计算行数和行的第一个元素。 一旦找到它,您只需添加列的编号,使“指针”移动到“行”元素


表{边框折叠:折叠;边距:1em;}
td{边框:1px纯黑色;填充:0.5em;}

在这种表显示中,关键是每行的元素数,它允许您计算行数和行的第一个元素。 一旦找到它,您只需添加列的编号,使“指针”移动到“行”元素


表{边框折叠:折叠;边距:1em;}
td{边框:1px纯黑色;填充:0.5em;}

如何显示较大的阵列?比如说60件。每行20个项目,共3列?@HappyNinja看看你是否能自己解决这个问题!我将编辑我的答案,使其更“一般”,以便您可以看到边界条件是如何工作的。如果你在一点尝试和错误后仍无法理解,我将帮助你解决更多问题。好的,你有60项,你希望第1列中的第1-20项、第2列中的第21-40项和第3列中的第41-60项正确吗?你现在能看到如何调整上面的例子来满足你的需要吗?我得到的例子数据有限。如何将其推广到更大的阵列中?有什么想法吗?是的,我知道如何做,我正在尝试帮助您自己做,这样您就可以了解这是如何工作的。您可以看到,在我的通用版本(答案的第二部分)中,循环计数器设置为columnOneStart/columnTwoStart,循环继续条件设置为columnOneEnd/columnTwoEnd。使用它,您可以看到如何扩展它以拥有columnThreeStart和columnThreeEnd吗?如何能够显示更大的数组?比如说60件。每行20个项目,共3列?@HappyNinja看看你是否能自己解决这个问题!我将编辑我的答案,使其更“一般”,以便您可以看到边界条件是如何工作的。如果你在一点尝试和错误后仍无法理解,我将帮助你解决更多问题。好的,你有60项,你希望第1列中的第1-20项、第2列中的第21-40项和第3列中的第41-60项正确吗?你现在能看到如何调整上面的例子来满足你的需要吗?我得到的例子数据有限。如何将其推广到更大的阵列中?有什么想法吗?是的,我知道如何做,我正在尝试帮助您自己做,这样您就可以了解这是如何工作的。您可以看到,在我的通用版本(答案的第二部分)中,循环计数器设置为columnOneStart/columnTwoStart,循环继续条件设置为columnOneEnd/columnTwoEnd。使用它,您可以看到如何扩展它以拥有columnThreeStart和columnThreeEnd吗?