在一个循环中显示未序列化数组的问题

huangapple go评论59阅读模式
英文:

Issue With An Unserialized Array display in A Loop

问题

关于我的问题:
https://stackoverflow.com/questions/76685765/displaying-serialized-array-php-mysql?noredirect=1#comment135242308_76685765

我在MYSQL中存储了一个序列化数组。我正在使用下面的代码反序列化然后在表格<td>中显示。代码运行正常,但值在每一行中合并在一起。假设,第一行的值是3,第二行的值是4,那么第一行显示3,这是正常的,但第二行显示3,4,类似地,第一行的值与其他行的值合并在一起。请协助。

谢谢

代码:

$abc = '';
foreach ($result as $row) {
    $fine_types = unserialize($row['fine_type']);
    echo "<td>";
    foreach ($fine_types as $fine_type) {
        $abc .= "<div dir='rtl' lang='ar' class='fntype'>" . $fine_type . '</div>';
    }
    echo "</td>";

    $output .= '
        <tr>
            <td style="text-align:right;">' . $abc . '</td></tr>';
}
echo $output;

生成的序列化字符串示例
a:3:{i:0;s:177:"66 - عدم تخزين وحفظ المواد الغذائية الجافة والمبردة والمجمدة في درجة مناسبة حرارة مناسبة لكل نوع";i:1;s:76:"13 - عدم وجود لوحة إعلانية بالاسم التجاري";i:2;s:63:"9 - إضافة فرع أو مستودع بدون ترخيص";}

上述字符串的反序列化格式
66 - عدم تخزين وحفظ المواد الغذائية الجافة والمبردة والمجمدة في درجة مناسبة حرارة مناسبة لكل نوع,
13 - عدم وجود لوحة إعلانية بالاسم التجاري,
9 - إضافة فرع أو مستودع بدون ترخيص

英文:

Referring to my question:
https://stackoverflow.com/questions/76685765/displaying-serialized-array-php-mysql?noredirect=1#comment135242308_76685765

I have a serialized array stored in MYSQL. I am unserializing and then displaying in table <td> using below code. The code works fine but values are merged in each row. Suppose, ist row had value 3 and second row had value 4 then ist row display 3, which is fine but second row shows 3,4 and similarly, ist row values are merged with other row values.
Please assist.

Thanks

Code:

$abc=&#39;&#39;;
foreach($result as $row)
  {
  $fine_types = unserialize($row[&#39;fine_type&#39;]);
  echo &quot;&lt;td&gt;&quot;;
    foreach ($fine_types as $fine_type) {
      		$abc .=&quot;&lt;div dir=&#39;rtl&#39; lang=&#39;ar&#39; class=&#39;fntype&#39;&gt; &quot;.$fine_type.&#39;&lt;/div&gt;&#39;;
		//$r=implode(&#39;,&#39;)
  	}
  	echo &quot;&lt;/td&gt;&quot;;
  

 `$output .= &#39;
    &lt;tr&gt;
			&lt;td style=&quot;text-align:right;&quot;&gt;&#39; . $abc . &#39;&lt;/td&gt;&lt;/tr&gt;&#39;;
}
echo $output;`

Example of A Generated serialized String

a:3:{i:0;s:177:"66 - عدم تخزين وحفظ المواد الغذائية الجافة والمبردة والمجمدة في درجة مناسبة حرارة مناسبة لكل نوع";i:1;s:76:"13 - عدم وجود لوحة إعلانية بالاسم التجاري";i:2;s:63:"9 - إضافة فرع أو مستودع بدون ترخيص";}

Above String in Unserialized Format

66 - عدم تخزين وحفظ المواد الغذائية الجافة والمبردة والمجمدة في درجة مناسبة حرارة مناسبة لكل نوع,

13 - عدم وجود لوحة إعلانية بالاسم التجاري,

9 - إضافة فرع أو مستودع بدون ترخيص

答案1

得分: 0

如果我理解正确,现在的问题是在处理后续行时,它会将先前的$row内容的输出添加到您的输出中,导致出现我们在此实时演示中看到的问题:https://3v4l.org/eXXRX。

如果是这样,那是因为在外部foreach执行时$abc没有被重置。您可以通过将$abc = ''; 移动到该循环内部来轻松解决这个问题:

foreach ($result as $row)
{
  $abc = '';
  $fine_types = unserialize($row['fine_type']);
  
  echo "<td>";
  foreach ($fine_types as $fine_type) {
    $abc .= "<div dir='rtl' lang='ar' class='fntype'> " . $fine_type . '</div>';
  }
  echo "</td>";

  $output .= '
    <tr>
            <td style="text-align:right;">' . $abc . '</td></tr>';
}
echo $output;

已更正的演示:https://3v4l.org/vCQ5V

英文:

If I understand correctly now, the problem is that it keeps adding the output of previous $row contents into your output when it processes subsequent rows, resulting in a problem like we see in this live demo: https://3v4l.org/eXXRX.

If so, that is because $abc is not reset each time the outer foreach is executed. You can easily fix that by moving $abc=&#39;&#39;; inside that loop:

foreach($result as $row)
{
  $abc=&#39;&#39;;
  $fine_types = unserialize($row[&#39;fine_type&#39;]);
  
  echo &quot;&lt;td&gt;&quot;;
  foreach ($fine_types as $fine_type) {
    $abc .=&quot;&lt;div dir=&#39;rtl&#39; lang=&#39;ar&#39; class=&#39;fntype&#39;&gt; &quot;.$fine_type.&#39;&lt;/div&gt;&#39;;
  }
  echo &quot;&lt;/td&gt;&quot;;

  $output .= &#39;
    &lt;tr&gt;
            &lt;td style=&quot;text-align:right;&quot;&gt;&#39; . $abc . &#39;&lt;/td&gt;&lt;/tr&gt;&#39;;
}
echo $output;

Demo with correction: https://3v4l.org/vCQ5V

huangapple
  • 本文由 发表于 2023年7月18日 16:50:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/76711011.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定