Php 将数组合并到键值相同的多维数组中

Php 将数组合并到键值相同的多维数组中,php,arrays,multidimensional-array,associative-array,Php,Arrays,Multidimensional Array,Associative Array,我已经在这个网站和网络上搜索了好几个小时,但是我似乎没有找到正确的答案。 我试图实现的是从数据库中获取一个表,将给定列中具有相同值的行组合到多维数组中 我的桌子看起来像这样: 我想要的是创建一个多维数组,其中设置的组id相同。 因此,我可以使用这些构建阵列在管理面板上显示设置部分。 这样地: 到目前为止,我掌握的代码是: $query = "SELECT * FROM bmp_settings"; $mysqli = new mysqli($hostname, $username, $pa

我已经在这个网站和网络上搜索了好几个小时,但是我似乎没有找到正确的答案。 我试图实现的是从数据库中获取一个表,将给定列中具有相同值的行组合到多维数组中

我的桌子看起来像这样:

我想要的是创建一个多维数组,其中设置的组id相同。 因此,我可以使用这些构建阵列在管理面板上显示设置部分。 这样地:

到目前为止,我掌握的代码是:

$query  = "SELECT * FROM bmp_settings";
$mysqli = new mysqli($hostname, $username, $password, $database);

// Check connection
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

if ($result = mysqli_query($mysqli,$query)) {

        while($bmp_setting_groups = mysqli_fetch_assoc($result)) {
            echo "<pre>";
            print_r ($bmp_setting_groups);
            echo "</pre>";
        }
}

/* free the results */
mysqli_free_result($result);

/* close connection */
$mysqli->close();
我得到的是12个关联数组


谁能在这里帮助我?

请参阅以下完整代码:

你想要这样的东西吗

$conn = new PDO('mysql:host=localhost;dbname=test_a', 'test', 'test'); //replace this with your credentials

$q1 = $conn->prepare('SELECT DISTINCT `setting_group_id` FROM `bmp_settings`');
$q1->execute();
$groups = array_fill_keys($q1->fetchAll(PDO::FETCH_COLUMN, 0), array());

$q2 = $conn->prepare("SELECT * FROM `bmp_settings`");
$q2->execute();
$result = $q2->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $r) {
    $gName = $r['setting_group_id'];
    $sKey = $r['setting_key'];
    $groups[$gName][$sKey] = $r;
    unset($groups[$gName][$sKey]['setting_group_id']); // not really needed
    unset($groups[$gName][$sKey]['setting_key']); // not really needed
}
然后你可以这样做:


这就得到了上面的数组。

通过设置\u GROUP\u id从bmp\u设置组中选择*通过设置\u GROUP\u id顺序,这就是您想要的…?这确实是我想要的,但它将所有行合并为一行,我无法从中提取单个设置。它还给了我:啊!你想反转表格吗?我想用相同的设置\u group\u id对行进行分组,并为每组设置构建一个面板。这看起来确实是我想要的!因为这样我就可以按照arrray做一些事情,并使用设置组给出的变量。哇,看起来棒极了!但是现在你失去了我:P我应该如何使用这些组?我最近刚开始用PHP编写脚本,虽然我现在已经有很多了,但这是我仍然需要学习的。@Fonta你说的我应该如何使用这些组是什么意思?很难解释,当看到这些评论时可能会变得很清楚:你是说如何构建实际的面板?
$conn = new PDO('mysql:host=localhost;dbname=test_a', 'test', 'test'); //replace this with your credentials

$q1 = $conn->prepare('SELECT DISTINCT `setting_group_id` FROM `bmp_settings`');
$q1->execute();
$groups = array_fill_keys($q1->fetchAll(PDO::FETCH_COLUMN, 0), array());

$q2 = $conn->prepare("SELECT * FROM `bmp_settings`");
$q2->execute();
$result = $q2->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $r) {
    $gName = $r['setting_group_id'];
    $sKey = $r['setting_key'];
    $groups[$gName][$sKey] = $r;
    unset($groups[$gName][$sKey]['setting_group_id']); // not really needed
    unset($groups[$gName][$sKey]['setting_key']); // not really needed
}