列出字母a到z只产生第一个字母a

时间:2018-10-10 18:26:10

标签: php

我有以下代码,我尝试在第一列中从a到z打印字母。但是我只得到字母“ a”被打印在整个列中。

function print_table_tb ($conn, $id) {
    $sql = "SELECT stata,statb,statc FROM dbA";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        echo "<table class='tbr' id='tb$id'>";
        while($row = $result->fetch_assoc()) {
            $data = array_reduce($row, function($carry, $value) {
                $carry[] = "<td dbval='{$value}'>{$value}</td>";
                return $carry;
            }, []);

            $range = range('a', 'z');
            $i = 0;

            echo '<tr><td class="tbe">'.$range[$i++ % 26].'</td>'. implode('', $data) . "</tr>\n" ;

        }

        echo "</table>";
    }
}  

我在这里做错了什么?谢谢你的帮助!我的问题不同。我没有寻求按字母顺序列出的解决方案,我有解决方案,但是我无法解决错误。

我尝试了此操作,但它也不起作用。

function print_table_tb ($conn, $id) {
    $sql = "SELECT stata,statb,statc FROM dbA";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {

        $range = array("a", "b", "c", "d");
        $i = 0;

        echo "<table class='tbr' id='tb$id'>";
        while($row = $result->fetch_assoc()) {
            $data = array_reduce($row, function($carry, $value) {
                $carry[] = "<td dbval='{$value}'>{$value}</td>";
                return $carry;
            }, []);


            echo '<tr><td class="tbe">' . $range[$i] . '</td>'
                . implode('', $data) . "</tr>\n" ;
            $i++;    
        }

        echo "</table>";
    }
}  

1 个答案:

答案 0 :(得分:0)

尝试

$range = range('a', 'z');
 $i = 0;  
 echo "<table class='tbr' id='tb$id'>";
    while($row = $result->fetch_assoc()) {
        $data = array_reduce($row, function($carry, $value) {
            $carry[] = "<td dbval='{$value}'>{$value}</td>";
            return $carry;
        }, []);
        $temp = ($i % 26);
        $i++;
        echo '<tr><td class="tbe">'.$range[$temp].'</td>'. implode('', $data) . "</tr>\n" ;

  }