我如何根据查询中的多个记录str_split文本字符

时间:2017-11-26 17:10:59

标签: php split character

我在我的解决方案中有查询$qty的示例2,1,3,2记录我想从 1234567810111213141516171819202122232425262728 的文本行中拆分每个4个不同的字符记录在$qty成就我的预期输出应该看起来像1234,5678,9101,1121,3141,5161,7181,9202 我试过了:

<?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]";
}
}
?>

但我输出了1234,5678,1234,1234,5678,9101,1234,5678这是我的错误。 非常感谢进步

1 个答案:

答案 0 :(得分:0)

因为每次从0开始从每个迭代中的str_split生成数组,所以只接受第一个元素。通过将其从while循环中取出并将循环外的旧计数保存在循环之外,您的代码将不会从头开始。

但请注意,如果您的图书质量总和高于初始字符串中的可用块数,则会遇到OutOfBoundsException

你的字符串也缺少9: 12345678的 9 10111213141516171819202122232425262728

<?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]}";
    }
}