【问题标题】:How do i str_split text character according to multiple record in query如何根据查询中的多条记录str_split文本字符
【发布时间】:2017-11-26 17:10:59
【问题描述】:

我在我的解决方案中有查询 $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 我做错了什么。 非常感谢您的进步

【问题讨论】:

  • 可能只是我,但我完全不知道你在这里问什么。请编辑您的问题并尝试使其更清晰。那个输入是什么?你为什么用它?您以粗体显示的值与代码中的值不同,应该是吗?那里的数据库查询是做什么用的? “我有查询的示例 2,1,3,2 记录”是什么意思?
  • 到目前为止我认为他的字符串是$plit = '';for ($i = 1; $i &lt;= 28; $i++) $plit .= $i;

标签: php split character


【解决方案1】:

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

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

您的字符串也缺少 9: 12345678910111213141516171819202122232425262728

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

【讨论】:

  • 尽管这可能是您正在寻找的东西,但我仍然对您想要实现的目标一无所知。
  • 感谢今天了解的出色解决方案,但我可以根据每个数量输出将此输出更新到数据库吗? E:g mysqli_query($conn, "UPDATE books SET output='$each_output' WHERE quantity=$qty");我试过了,但我只得到更新到数据库示例 5678,9101,5161,9202 的每个输出的最后一条记录
  • @KingsleyPlaza 在forloop 之前创建一个变量,用于保存相应的块并使用该变量更新数据库:$output = ''; for(;$b &lt; $oldB + $qty; $b++) {$output .= $show_plit[$b];} mysqli_query($conn, "UPDATE books SET output='$output' WHERE quantity=$qty");
  • 是的,非常明智,从未想过 $output = ' ';非常感谢您的知识
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
相关资源
最近更新 更多