php - PHP多维数组输出HTML表格
问题描述
我在一个数组中有两个带键的数组,我想按年份将其输出到 HTML 表中。例如:
Jaar | Basis | Secundair
2021 | Wiskunde | PAV 3de graad b-stroom
2021 | --------------| Burgerzin 3de graad b-stroom
2020 | Informatieverwerving en -verwerking met ICT | Kritisch denken & mediawijsheid
我的代码:
$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>";
foreach ($combined as $ar) {
$mark = 0;
echo '<pre>' , var_dump($ar), '</pre>';
// echo '<pre>' , var_dump($ar), '</pre>';
foreach ($ar[0] as $fkey => $fval) {
foreach($ar[1] as $skey => $sval){
$fval['basis'] = !$mark ? $fval['basis'] : '';
echo '<pre>' , var_dump($ar[0]), '</pre>';
$term_slug_ba = get_term_by('slug',$fval["basis"],'leer_vakgebied');
$name_slug = $term_slug_ba->slug;
$term_slug_so = get_term_by('slug',$sval["sec"],'leer_vakgebied_so');
$name_slug_so = $term_slug_so->slug;
$output .= "<tr><td>".$fval['jaar']."</td><td>";
/* basisonderwijs peilingen met link */
if(!empty($name_slug))
{
if (ICL_LANGUAGE_CODE == "en") {
//show English
$output .= "<a href='".esc_url( add_query_arg( 'peiling', $name_slug,site_url( '/knowledge-sharing/polls/primary') ))."'>".$fval['basis']. "</a></td>";
} elseif (ICL_LANGUAGE_CODE == "fr") {
//show french
$output .= "<a href='".esc_url( add_query_arg( 'peiling', $name_slug,site_url( '/partage-des-connaissances/sondages/primaire') ))."'>".$fval['basis']. "</a></td>";
} else {
//show default language
$output .= "<a href='".esc_url( add_query_arg( 'peiling', $name_slug,site_url( '/kennisdeling/peilingen/basisonderwijs') ))."'>".$fval['basis']. "</a></td>";
}
}
/* secundair onderijs peilingen met link */
if(!empty($name_slug_so))
{
if (ICL_LANGUAGE_CODE == "en") {
//show English
$output .= "<td><a href='".esc_url( add_query_arg( 'peiling', $name_slug_so,site_url( '/knowledge-sharing/polls/secondary-education') ))."'>".$sval['sec']." | ". $sval["onderwijsniveau"]."</a></td>";
} elseif (ICL_LANGUAGE_CODE == "fr") {
//show French
$output .= "<td><a href='".esc_url( add_query_arg( 'peiling', $name_slug_so,site_url( '/partage-des-connaissances/sondages/enseignement-secondaire') ))."'>".$sval['sec']." | ". $sval["onderwijsniveau"]."</a></td>";
} else {
//show the default language
$output .= "<td><a href='".esc_url( add_query_arg( 'peiling', $name_slug_so,site_url( '/kennisdeling/peilingen/secundair-onderwijs') ))."'>".$sval['sec']." | ". $sval["onderwijsniveau"]."</a></td>";
}
}
$output .="</tr>";
if ($fval['basis']) $mark = 1;
}
}
}
$output .= "</table>";
参见其他问题:Building of HTML table with two multidimensional arrays
但我只有一个问题,数组索引 0 可以为空,数组索引 1 也可以。例如像这样:
array(2) {
[0]=>
array(1) {
[0]=>
array(2) {
["jaar"]=>
string(4) "2005"
["basis"]=>
string(26) "Wereldoriëntatie (natuur)"
}
}
[1]=>
NULL
}
array(2) {
[0]=>
array(1) {
[0]=>
array(2) {
["jaar"]=>
string(4) "2002"
["basis"]=>
string(8) "Wiskunde"
}
}
[1]=>
NULL
}
array(2) {
[0]=>
array(1) {
[0]=>
array(2) {
["jaar"]=>
string(4) "2001"
["basis"]=>
string(10) "Nederlands"
}
}
[1]=>
NULL
} ```
For now the second foreach stops if array index 1 is empty? How can i continue the foreach until all the values from index 0 and 1 Thanks!
解决方案
如果您的索引 0 或 1 为空,则它array
不再是 a,因此它不能foreach
对空结果执行 a 并导致错误。
您应该if
在 foreach 周围放置一些语句,以检查密钥是否存在,然后再循环通过它
if(array_key_exists(0, $ar)){
// then do foreach
}
else{
// key doesn't exists but loop continues
}
对索引 0 和索引 1 执行此操作。
推荐阅读
- c# - ASP.NET Core 2.1 使用 Nlog 配置作为 .NET MVC5
- java - 旋转时自动调用 onBindViewHolder
- python - 传递数据时python socket http库发布请求不起作用
- android - Firebase 性能监控网络报告未出现在某些设备上
- r - 创建一个包含 4 个向量的 DataFrame,然后标记然后按向量源对值进行分组
- python - Python - 使用多线程对列表中的元素执行操作
- ocr - Tesseract,有什么方法可以显示 Tesseract 4.0 中预测字符的概率?
- c++ - 为什么我需要在转换构造函数上引用 this->?
- php - 如何在 linux localhost 中使用 codeigniter 发送电子邮件
- xsl-fo - 如何使用 XSL FO 完全适合 PDF 中的图像