用于循环阵列显示

时间:2017-09-29 17:24:02

标签: php arrays

我有像这样的数组值

Array ( 
    [0] => A1
    [1] => A2
) 
Array ( 
    [0] => B1 
    [1] => B2
    [2] => B3
)

爆炸

$explodedeductedfinal = explode(",",$CODE);

这是我在td输出数据的PHP代码

foreach($explodedeductedfinal as $is){
    $bankname = trim($is);

     if (!empty($bankname)) {
         echo   "<td class='center'>$bankname</td>";
     }else{
         echo   "<td class='center'>'novalue'</td>";
     }
}   

输出:

|Column A|Column B|Column C| 
    A1       A2
    B1       B2      B3

期望的输出:

 |Column A|Column B|Column C| 
      A1      A2    novalue
      B1      B2      B3

我只想在$ bankname为空时输出它将显示无值

3 个答案:

答案 0 :(得分:1)

第三个元素不是空的,它不存在,所以foreach只会循环两个。您可以强制它达到您想要的长度并提供默认值:

$default = array_fill(0, 3, 'novalue');
$explodedeductedfinal = array_replace($default, explode(",", $CODE));

foreach($explodedeductedfinal as $is){
     $bankname = trim($is);
     echo "<td class='center'>$bankname</td>";
}   

答案 1 :(得分:0)

好的foreach将遍历数组的每个元素。

if (!empty($bankname)) {

因为你在foreach中,所以不会是空的。如果总有3列,您可以考虑使用简单的for语句,或者使用javascript来填充表中具有默认值的所有空单元格。为此,看到这个小提琴。我过去不得不使用它。

http://jsfiddle.net/yL8t1psf/1/

答案 2 :(得分:0)

计算数组的最大索引并在其上循环而不是foreach。从数据库中,您可以获得最大值。然后使用isset()来验证是否为该索引设置了值。

我编写了这个(快速和脏,没有数据库,没有输出格式化):

<table>
<?php
    $arA = array(0 => 'A1', 1 => 'A2');
    $arB = array(0 => 'B1', 1 => 'B2', 2 => 'B3');

    function output_ar($ar,$maxindex)
    {
        for ($i = 0; $i <= $maxindex; $i++)
        {
            if (isset($ar[$i]))
            {
                echo "<td>" . $ar[$i] . "</td>";
            }
            else
            {
                echo "<td>novalue</td>";
            }
        }
    }

    $maxindex = max(count($arA),count($arB)) -1;
    echo "<tr>\n";
    output_ar($arA,$maxindex);
    echo "</tr>\n<tr>\n";
    output_ar($arB,$maxindex);
    echo "</tr>\n";
?>
</table>