首页 > 解决方案 > 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!

标签: phpforeach

解决方案


如果您的索引 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 执行此操作。


推荐阅读