【问题标题】:Building of HTML table with two multidimensional arrays用两个多维数组构建 HTML 表
【发布时间】:2019-12-14 14:49:18
【问题描述】:

我在一个数组中有两个带有键的数组,我想按年份在 HTML 表中输出。 例如:

贾尔 |基础 |二次元

2021 |威斯昆德 | PAV 3de graad b-stroom
2021 | --------------| Burgerzin 3de graad b-stroom
2020 | Informatieverwerving en -verwerking 遇到了 ICT | Kritsch denken & mediawijsheid

我的输入数组是这样的:

array(2) {
  [0]=>
  array(1) {
    [0]=>
    array(2) {
      ["jaar"]=>
      string(4) "2021"
      ["basis"]=>
      string(8) "Wiskunde"
    }
  }
  [1]=>
  array(2) {
    [0]=>
    array(3) {
      ["jaar_so"]=>
      string(4) "2021"
      ["sec"]=>
      string(3) "PAV"
      ["onderwijsniveau"]=>
      string(9) "3de graad"
    }
    [1]=>
    array(3) {
      ["jaar_so"]=>
      string(4) "2021"
      ["sec"]=>
      string(9) "Burgerzin"
      ["onderwijsniveau"]=>
      string(18) "3de graad B-stroom"
    }
  }
}
array(2) {
  [0]=>
  array(1) {
    [0]=>
    array(2) {
      ["jaar"]=>
      string(4) "2020"
      ["basis"]=>
      string(43) "Informatieverwerving en -verwerking met ICT"
    }
  }
  [1]=>
  array(1) {
    [0]=>
    array(3) {
      ["jaar_so"]=>
      string(4) "2020"
      ["sec"]=>
      string(35) "Kritisch denken & mediawijsheid"
      ["onderwijsniveau"]=>
      string(9) "3e graad "
    }
  }
}
}

我已经尝试过这个 foreach 循环:

$output = "<table class='noborder homepeilingskalender fixed_header'><thead><tr><th>"
.get_field('titel_eerste_kolom')."</th><th>"
.get_field('titel_tweede_kolom')."</th><th>"
.get_field('titel_derde_kolom')."</th></tr></thead>";

foreach ($combined as $key2 => $array_keys) {
     foreach ($array_keys as $key => $value) {
         foreach($value as $key3 =>$value_def){

             $output .= "<tr><td>".$value_def['jaar']
                           ."</td><td>$value_def["basis"]
                           ."</td><td>".$value_def["sec"]
                           ."</td></tr>";    
         }
     }
 }
$output .= "</table>";

【问题讨论】:

  • &lt;tbody&gt;在哪里?

标签: php html arrays


【解决方案1】:

你可以使用下一个foreach循环:

foreach($all_ars as $ar){
    $mark = 0;
    foreach($ar[0] as $fkey => $fval){
        foreach($ar[1] as $skey => $sval){ 
            $fval['basis'] = !$mark ? $fval['basis'] : '';
            $output .= "<tr><td>".$fval['jaar']."</td><td>".$fval['basis']. "</td><td>".$sval['sec']."</td></tr>";
            if ($fval['basis']) $mark = 1;
        }
    } 
} 

在哪里$all_ars = [$ar1,$ar2];

不要忘记在开头和结尾添加&lt;tbody&gt;标签:

$output = "<table class='noborder homepeilingskalender fixed_header'><thead><tr><th>".get_field('titel_eerste_kolom')."</th><th>".get_field('titel_tweede_kolom')."</th><th>".get_field('titel_derde_kolom')."</th></tr></thead><tbody>";

$output .= "</tbody></table>";  

还要小心在循环连接内使用'",您需要使用其中之一。

Demo

【讨论】:

    【解决方案2】:

    您的代码在您附加到$output 的行中缺少一些引号。

    此外,输出中的数组结构似乎不适合您在代码中处理它的方式。我认为您应该再次检查您的代码并确保所有内容都适合。将“外部”数组视为表格的行,将“内部”数组的字段视为相应行的单元格。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2014-01-11
      • 2014-05-27
      • 2014-07-07
      • 2011-07-17
      相关资源
      最近更新 更多