gpt4 book ai didi

PHP 向原始 foreach 数组添加值以使其继续运行

转载 作者:行者123 更新时间:2023-11-29 04:42:34 25 4
gpt4 key购买 nike

我想知道是否可以向 foreach 数组添加值以使其继续运行,直到它不能再运行为止。它用于一个简单的线程式留言板系统,当一个帖子被删除时,它也会删除它下面的所有帖子。

我想出了一个 foreach 循环,将帖子拉到它下面并将它们添加到数组的末尾以保持它继续运行直到它用完所有行,但我似乎无法让它继续遍历所有这些.

当前代码是:

foreach ($deleterows as $key => &$value) {
$sql = "SELECT id FROM posts WHERE replyto='$value'";
$query = mysqli_query($con,$sql) or die("cannot select next posts");
while ($newrow = mysqli_fetch_array($query)) {
array_push($deleterows,$newrow['id']);
}
}

第一个 $deleterows 是一个数组,其中包含所有回复我要删除的帖子的帖子的 ID。然后,对于每个帖子,它都应该搜索数据库以查找该帖子的回复,并将其添加到 $row 数组的末尾以使其继续运行,直到它具有要删除的所有帖子的完整列表。

我正在尝试执行此操作的测试帖子如下:

Post 53
-Post 54
--Post 55
---Post 56
-Post 57
--Post 58

第54、57条是对主帖的回复,其他是对它们的回复。

当我尝试删除帖子 53 时,$row 数组中将包含 53、54、55、56,但仍然不会获得第 57 或 58 行。谷歌搜索等,只是无法弄清楚。

最佳答案

你可以尝试像下面这样的递归:

function delete($deleterows) {
global $con;

foreach ($deleterows as $key => &$value) {
$sql = "SELECT id FROM posts WHERE replyto='$value'";
$query = mysqli_query($con,$sql) or die("cannot select next posts");
$tmpdeleterows = array();
while ($newrow = mysqli_fetch_array($query)) {
$tmpdeleterows[]=$newrow['id'];
}
if(!empty($tmpdeleterows)) {
delete($tmpdeleterows);
}
}
}

您所有的 ID 都被添加到一个临时数组中,然后被发送到同一个函数中进行处理。我已经添加了全局 $con 行,假设您的数据库连接在全局范围内,否则您总是可以将它作为参数传递。

关于PHP 向原始 foreach 数组添加值以使其继续运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496772/

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