【问题标题】:filling the values of a multidimensional associative array to a html table将多维关联数组的值填充到 html 表中
【发布时间】:2016-11-08 08:33:47
【问题描述】:

这是关联数组

$newArr=Array ( 
    [565] => Array ( 
        [3] => Array ( 
            [1] => Array ( 
                [1] => 1 
            ) 
        ) 
    ) 
    [67677] => Array ( 
        [4] => Array ( 
            [1] => Array ( 
                [1] => 1 
            ) 
         ) 
     ) 
    [767] => Array ( 
        [6] => Array ( 
            [1] => Array ( 
                [1] => 1 
            ) 
        ) 
    ) 
    [76767] => Array ( 
        [7] => Array ( 
            [1] => Array ( 
                [1] => 1 
            ) 
        ) 
    ) 
    [878] => Array ( 
        [8] => Array ( 
            [1] => Array ( 
                [1] => 1 
            ) 
        ) 
        [127] => Array ( 
            [1] => Array ( 
                [1] => 1 
            ) 
        ) 
    ) 
    [87] => Array ( 
        [7] => Array ( 
            [1] => Array ( 
                [1] => 1 
            ) 
        ) 
    ) 
    [xyz] => Array ( 
        [1] => Array ( 
            [2] => Array ( 
                [2] => 2 
            ) 
        )
    ) 
    [abc] => Array ( 
        [1] => Array ( 
            [2] => Array ( 
                [1] => 1 
            ) 
        ) 
        [4] => Array ( 
            [1] => Array ( 
                [1] => 1 
            )
        ) 
        [5] => Array ( 
            [1] => Array ( 
                [1] => 1 
            ) 
        ) 
    ) 
)

我想在 html 表格中显示它。此关联数组的第二列对应的索引将在 1 到 5 之间变化,如果与该第二列值对应的第三列不存在,则将其赋予 NULL 或零。

我尝试了以下代码,但只打印了与每个主子数组的最后一行相对应的值。 (例如 -

abc     1   0   0
        2   0   0
        3   0   0
        4   0   0
        5   1   1 

这是我尝试了很久的代码。

foreach($newArr as $key1=>$value1){     
    if(is_array($value1)){
        foreach($value1 as $key2=>$value2){ 
            if(is_array($value2)){ 
                foreach($value2 as $key3=> $value3){
                    if(is_array($value3)){ 
                        foreach($value3 as $key4=> $value4){

                        }
                    }
                }
            }
            echo "<td rowspan=5 >". $key1. "</td>";
            for($i=1;$i<6;$i++){
                if($key2==$i){
                    echo "<td>". $key2. "</td>";
                    echo "<td>". $key3. "</td>";
                    echo "<td>". $key4. "</td>";
                } else{
                    echo "<td>". $i. "</td>";
                    echo "<td>". 0 . "</td>";
                    echo "<td>". 0 . "</td>";
                }
                echo "<tr>";
            }
            echo "</tr>";
        }
    }   
}

我被这个卡住了一段时间。如果有人可以帮助我,我将不胜感激! 不要太苛刻,我已经阅读了与 foreach 相对应的手册和与此类似的其他问题,但我无法做到。 提前致谢!干杯!!

【问题讨论】:

  • 你正在制作所有这些 foreach 但你没有对它们做任何事情。您必须在循环中处理一些代码
  • @RafaelShkembi 的某些代码是指 value-feeding-in-html-table 部分吗?
  • @RafaelShkembi $key2 对应于第二列,它不是 NULL 我的浏览器正确显示其值
  • 是的,我错了。我正在编写 scipt,请等待 1 分钟

标签: php multidimensional-array foreach html-table associative-array


【解决方案1】:

那么有什么问题。问题是您正在创建一个 foreach 循环,但没有处理其中的任何代码。 $key4 将是未定义的,因为它仅在 foreach 循环 exept 中可用,如果您将其设为全局。

foreach($newArr as $key1=>$value1){     
if(is_array($value1)){
    foreach($value1 as $key2=>$value2){ 
        $var_key2 = $key2;
        if(is_array($value2)){ 
            foreach($value2 as $key3=> $value3){
                $var_key3 = $key3;
                if(is_array($value3)){ 
                    foreach($value3 as $key4=> $value4){
                        $var_key4 = $key4;
                    }
                }
            }
        }
    }
    echo "<td rowspan=5 >". $key1. "</td>";
        for($i=1;$i<6;$i++){
            if($var_key2 == $i){
                echo "<td>".$var_key2."</td>";
                echo "<td>".$var_key3."</td>";
                echo "<td>".$var_key4."</td>";
            } else{
                echo "<td>". $i. "</td>";
                echo "<td>". 0 . "</td>";
                echo "<td>". 0 . "</td>";
            }
            echo "<tr>";
        }
        $var_key2 = "";
        $var_key3 = "";
        $var_key4 = "";
        echo "</tr>";
    }   
}

【讨论】:

  • $rafael 先生,我也试过那个,但它也不起作用。使用上面的代码,表格的结构被扭曲了。
  • 尝试更改 $i 的第一个值。使其 $i = 0
  • 数组中的第一个元素在位置0,第二个在位置1,依此类推。
  • 这也无济于事:(我还必须打印这些 $i 值(从 1 到 5)
  • scipt 的输出是什么?
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 2014-05-17
  • 2019-10-28
  • 1970-01-01
  • 2015-07-26
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多