gpt4 book ai didi

php - 构建 foreach 循环

转载 作者:行者123 更新时间:2023-11-29 12:56:40 25 4
gpt4 key购买 nike

我正在尝试使用 PHP 实现以下输出。我不确定级联 foreach 方法是否最好,但我认为不是。

我引用了我之前的问题,其中有有用的答复:Foreach changed row .

<group id="1">
<message id="1"></message>
<message id="2"></message>
<message id="3"></message>
</group>
<group id="2">
<message id="4"></message>
<message id="5"></message>
<message id="6"></message>
</group>
<group id="3">
<message id="7"></message>
<message id="8"></message>
</group>

MySQL 结果 ($results) 中的一列是唯一的 ('message_id'),而另一列可能与另一列 ('group_id') 共享相同的值。

message_id |  group_id 

1 | 1
2 | 1
3 | 1
4 | 2
5 | 2
6 | 2
7 | 3
8 | 3

这是我正在使用的 PHP 代码:

$groupId = '';
foreach ($results as $message)
{
if ($message['message_id'] !== $groupId)
{
if (!empty($groupId))
{
$string .= '</group>';
}
$string .= "<group id=\"{$message['group_id']}\">" . "\n";
$groupId = $message['group_id'];
}

$string .= "<message id=\"{$message['message_id']}\"></message>" . "\n";
}
if (!is_null($groupId))
{
$string .= '</group>';
}

return $string;

上面的代码只输出单个<message>项目,并且查看我的 MySQL 查询和结果,这始终是组中的最后一项。

最佳答案

更改此:

if ($message['message_id'] !== $groupId)

对此:

if ($message['group_id'] !== $groupId)

这是我的测试:

$results = array(
array('message_id' => 1, 'group_id' => 1, 'message' => 'a'),
array('message_id' => 2, 'group_id' => 1, 'message' => 'b'),
array('message_id' => 3, 'group_id' => 1, 'message' => 'c'),
array('message_id' => 4, 'group_id' => 2, 'message' => 'd'),
array('message_id' => 5, 'group_id' => 2, 'message' => 'e'),
array('message_id' => 6, 'group_id' => 2, 'message' => 'f'),
array('message_id' => 7, 'group_id' => 3, 'message' => 'g')
);

$groupId = null;
foreach ($results as $message)
{
if ($message['group_id'] !== $groupId)
{
if (!is_null($groupId))
{
$string .= '</group>';
}
$string .= "<group id=\"{$message['group_id']}\">" . "\n";
$groupId = $message['group_id'];
}

$string .= "<message id=\"{$message['message_id']}\">{$message['message']}</message>" . "\n";
}
if (!is_null($groupId))
{
$string .= '</group>';
}

echo $string;

现在我得到了这个:

<group id="1">
<message id="1">a</message>
<message id="2">b</message>
<message id="3">c</message>
</group>
<group id="2">
<message id="4">d</message>
<message id="5">e</message>
<message id="6">f</message>
</group>
<group id="3">
<message id="7">g</message>
</group>

关于php - 构建 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23962354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com