【问题标题】:Print arrays vertically in each column in PHP [closed]在PHP的每一列中垂直打印数组[关闭]
【发布时间】:2023-03-20 22:40:01
【问题描述】:

我有一个数字数组,它的行数和列数是已知的。我希望每个循环中的每一列都打印在一个列表中。

$row = 3;
$col = 4;
             
$arr=[
              '1'  , '2'   , '3'   , '4',
              '5' , '6'   ,'7'   , '8',
              '9'  ,'10'  ,'11'  ,'12'
];

输出:

<ul>
<li>1<li>
<li>5<li>
<li>9<li>
<ul>
<ul>
<li>2<li>
<li>6<li>
<li>10<li>
<ul>
<ul>
<li>3<li>
<li>7<li>
<li>11<li>
<ul>
<ul>
<li>4<li>
<li>8<li>
<li>12<li>
<ul>

我尝试使用 array_chunk 进行 foreach,但结果是按顺序和水平显示的

【问题讨论】:

  • 这是一个一维数组
  • 请检查:How do I ask and answer homework questions? 请至少展示您自己解决问题的一些尝试。专门询问障碍,而不是将整个问题原封不动地粘贴在这里。
  • @aryanagarwal 是的,有什么问题?
  • @KoalaYeung 是的,我知道我尝试使用 array_chunk 进行 foreach,但结果按顺序显示,水平显示我不想让问题变得混乱
  • @Dragon:请向我们展示您的 PHP 代码。

标签: php arrays sorting


【解决方案1】:

我尝试使用 array_chunk 进行 foreach

块是连续项目的组,但您要在此处“分组”的项目不是连续的。

用两个嵌套的for 循环解决这个问题相当简单。您需要做的就是计算根据您当前的行号和列号访问正确数组元素的正确索引。

(您在这里对变量的命名似乎是错误的方式,但我会坚持在此示例中使用它们的方式。)

for($c = 0; $c < $col; ++$c) {
  echo '<ul>';
  for($r = 0; $r < $row; ++$r) {
    echo '<li>' . ($arr[$r * $col + $c]) . '</li>';  
  }
  echo '</ul>';
}

您需要四个 ul 元素,因此我们首先循环“列”,然后在每个列表中,您需要三个项目,因此我们在内部循环中循环“行”数。

然后简单地计算访问正确元素的索引,即当前行索引乘以列数,再加上当前列索引。

【讨论】:

  • 谢谢,我会测试你的代码
猜你喜欢
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多