Php 数组与SQL的比较

Php 数组与SQL的比较,php,Php,我希望下面的代码将查询中的SQL信息与数组进行比较,这样即使在SQL中出现两次,也不会重复两次相同的内容 问题是,一件事会得到两次回音。我在每个循环中使用print_r来查看数组如何变化,下面是它如何变化的: 排列 数组[0]=>我的\u预设 数组[0]=>我的预设[1]=>测试预设 PHP代码: $parentArray = array(); $sql = "SELECT * FROM wb_values"; $result = mysqli_query($conn, $s

我希望下面的代码将查询中的SQL信息与数组进行比较,这样即使在SQL中出现两次,也不会重复两次相同的内容

问题是,一件事会得到两次回音。我在每个循环中使用print_r来查看数组如何变化,下面是它如何变化的:

排列

数组[0]=>我的\u预设

数组[0]=>我的预设[1]=>测试预设

PHP代码:

$parentArray = array();
$sql = "SELECT * FROM wb_values";
$result = mysqli_query($conn, $sql);

while ($row = $result->fetch_assoc()) {
    print_r($parentArray);
    if (!in_array($row['parentID'], $parentArray)) {
        array_push($parentArray, $row['parentID']);

        foreach ($parentArray as $parent) {
            $sqlParent = "SELECT * FROM presets WHERE id='$parent'";
            $resultParent = mysqli_query($conn, $sqlParent);
            while ($row = $resultParent->fetch_assoc()) {

            echo "<div class='section'>
                    <div class='left-mark'></div>
                    <p class='text'> ".$row['preset_name']." </p>
                </div>";

            }

        }
        
    }
}

问题在于,foreach位于填充数组的循环中,因此每次添加新预设时,都会打印数组中包含的其余预设。只要将foreach放在循环之后,它就可以正常工作:

$parentArray = array();
$sql = "SELECT * FROM wb_values";
$result = mysqli_query($conn, $sql);

while ($row = $result->fetch_assoc()) {
    print_r($parentArray);
    if (!in_array($row['parentID'], $parentArray)) {
        array_push($parentArray, $row['parentID']);
    }
}

foreach ($parentArray as $parent) {
    $sqlParent = "SELECT * FROM presets WHERE id='$parent'";
    $resultParent = mysqli_query($conn, $sqlParent);
    while ($row = $resultParent->fetch_assoc()) {
        echo "<div class='section'>
            <div class='left-mark'></div>
            <p class='text'> ".$row['preset_name']." </p>
        </div>";
    }
}