Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP多维数组和while i++;_Php_Multidimensional Array_Html Table - Fatal编程技术网

PHP多维数组和while i++;

PHP多维数组和while i++;,php,multidimensional-array,html-table,Php,Multidimensional Array,Html Table,因此,我在创建带有“名称”的表时遇到问题。我只得到了两个结果,而不是4个。这是我的多维数组: Array ( [0] => Array ( [start] => 1 [name] => Test_name_1 ) [1] => Array ( [start] => 6 [name] => Test_n

因此,我在创建带有“名称”的表时遇到问题。我只得到了两个结果,而不是4个。这是我的多维数组:

Array
(
    [0] => Array
        (
            [start] => 1
            [name] => Test_name_1
        )

    [1] => Array
        (
            [start] => 6
            [name] => Test_name_2
        )

    [2] => Array
        (
            [start] => 22
            [name] => Test_name_3
        )

    [3] => Array
        (
            [start] => 23
            [name] => Test_name_4
        )

)
然后我想用
$I=1创建一个表和直到47。我的代码是:

$i=1;
而($i
$i=1;

while($i这可能会解决while循环的问题

                $array = [
                    ['start' => 1, 'name' => 'Test_name_1'], ['start' => 6, 'name' => 'Test_name_2'],
                    ['start' => 22, 'name' => 'Test_name_3'], ['start' => 23, 'name' => 'Test_name_4'],

                ];
                echo '<table>';
                $i=1;
                while ($i<=47){
                $count=0;
                foreach($array as $test){
                
                    if (((int)$test['start'])==$i){
                        echo '<tr>'; 
                    echo '<td align="center" style="border-top: 1px solid black;"> 
                    <b>'.$test['name'].'</b> </td>';
                    echo '<td align="center" style="border-top: 1px solid black;">'.$i.' </td>';
                    echo '</tr>'; 
                    }else{
                        $count=$count+1;
                        if( $count==count($array))
                        {
                        echo '<tr>'; 
                    echo '<td align="center" style="border-top: 1px solid black;">blank </td>';
                    echo '<td align="center" style="border-top: 1px solid black;">'.$i.' </td>';
                    echo '</tr>'; }
                }
                }
                $count=0;
                $i++;
                }
                echo '</table>';
$array=[
['start'=>1,'name'=>Test\u name\u 1'],['start'=>6,'name'=>Test\u name\u 2'],
['start'=>22,'name'=>Test\u name\u 3'],['start'=>23,'name'=>Test\u name\u 4'],
];
回声';
$i=1;

而($i以下逻辑可能会帮助您解决问题:

<?php
$arr = [
    ['start' => 1, 'name' => 'Test_name_1'], ['start' => 6, 'name' => 'Test_name_2'],
    ['start' => 22, 'name' => 'Test_name_3'], ['start' => 23, 'name' => 'Test_name_4'],

];

$hit = false;
echo '<table>';
for($i = 1; $i <= 47; $i++) {
echo '<tr>';
    foreach($arr as $record) {
        if($record['start'] == $i) {
            $hit = true;
            echo '<td align="center" style="border-top: 1px solid black;"><b>' . $record['name'] . '</b> </td>';
            echo '<td align="center" style="border-top: 1px solid black;">' . $i . ' </td>';
            break;
        }
    }
    if(!$hit) {
        echo '<td align="center" style="border-top: 1px solid black;">blank </td>';
        echo '<td align="center" style="border-top: 1px solid black;">' . $i . ' </td>';
    }

    echo '</tr>';
    $hit = false;
}
echo '</table>';

看起来您从未关闭过标记。请尝试$i++;echo“”;谢谢,我已更正了关闭标记,但结果仍然相同。奇怪的是,如果我将“Test_name_1”编辑到起始位置“2”,它也不会显示在表中。我必须承认,我发现您构建代码的方式有点难以阅读。您似乎在while循环中数到47(这很好),但随后执行表行(tr)在foreach循环中,每次迭代4次。我认为您希望将第二个集合移动到while循环的外部并关闭。同时,我认为您还希望将第二个集合移动到while循环的外部。这样,您将在每次迭代中执行一次,而不是每次迭代4次。此外,您的I++需要移动到while循环的外部op.谢谢你的回复。我试过了,但是结果是一样的。我在循环外添加了,但是如果我在循环外添加第二个,我的表有4个标记。如果我在写它,foreach循环内唯一的东西就是if/else语句。实际上,如果我在写它,我会将foreach完全提取到一个函数中,所以我只有一个要担心的循环。我想我是想找到一种礼貌的方式来说,如果你的代码结构有点不同,那么调试它就会更容易。在循环中嵌套一个循环总是让事情很难理解,而且你在错误循环的错误部分有很多东西。如果我在循环外添加$I++,那么第二行get的多层显示结果与我的相同。我还将标记发送到循环外部。