代码之家  ›  专栏  ›  技术社区  ›  Kingsley Plaza

如何在查询中根据多条记录分割文本字符

  •  0
  • Kingsley Plaza  · 技术社区  · 8 年前

    我有查询的示例2,1,3,2记录 $qty 在我的解决方案中,我想从 1234567810111213141516171819202122232425262728 仅根据中的每个记录 $数量 在实现中,我的预期输出应该是1234567810111213141516171819202 我尝试过:

    <?php
    require("init.php");
    ?>
    <?php
    $sql = mysqli_query($conn, "select * from books where book='1644445'");
    while($row = mysqli_fetch_assoc($sql))
    {
    $qty  = $row["quantity"];  
    echo "<br/>$qty"; #result 2132
    $plit = "1234567810111213141516171819202122232425262728";
    $show_plit = str_split($plit, 4);
    for($b = 0; $b<$qty; $b++)
    {
    echo "<br/>$show_plit[$b]";
    }
    }
    ?>
    

    但我在输出中得到123456781234567891012345678我做错了什么。 非常感谢预付款

    1 回复  |  直到 8 年前
        1
  •  0
  •   Philipp Maurer    8 年前

    因为您从 str_split 在从0开始的每次迭代中,只取第一个元素。把它从 while 循环并将旧的b计数保存在循环外,代码将不会从头开始。

    但请注意,您将遇到 OutOfBoundsException ,如果书本质量和大于初始字符串的可用块数。

    此外,您的字符串缺少9: 12345678 9

    <?php
    $sql = mysqli_query($conn, "select * from books where book='1644445'");
    $split = "12345678910111213141516171819202122232425262728";
    $show_plit = str_split($split, 4);
    $b = 0;
    while($row = mysqli_fetch_assoc($sql))
    {
        $qty  = $row["quantity"];  
        $oldB = $b;
        echo "<br/>{$qty}"; #result 2132
        for(; $b< $oldB + $qty; $b++)
        {
            echo "<br/>{$show_plit[$b]}";
        }
    }
    
    推荐文章