我在我的解决方案中有查询$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这是我的错误。 非常感谢进步
答案 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]}";
}
}