Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将两个数组相互组合,并从MySQL数据库中获取名称_Php_Mysql_Arrays_Database Design_Variables - Fatal编程技术网

Php 将两个数组相互组合,并从MySQL数据库中获取名称

Php 将两个数组相互组合,并从MySQL数据库中获取名称,php,mysql,arrays,database-design,variables,Php,Mysql,Arrays,Database Design,Variables,问题: 将两个数组相互组合,并使用MySQL表中的数据构建一个数组。在一个表(betyg_answers)中,我有两列,分别称为类别和项目 类别包含:1,5,9,13,16 项目包含:2,3,4,6,7,8,10,11,12,14,15,17,18 这些值存储在变量中:$categories和$items 在另一个表(betyg_category)中,我存储了每个类别的名称和名称,如下所示: 问题: 我该如何构建一个大数组,从超级级别的类别开始,一直到较低级别的项目 换句话说,我希望数组看

问题:

将两个数组相互组合,并使用MySQL表中的数据构建一个数组。在一个表(betyg_answers)中,我有两列,分别称为类别和项目

  • 类别包含:1,5,9,13,16
  • 项目包含:2,3,4,6,7,8,10,11,12,14,15,17,18
这些值存储在变量中:$categories和$items

在另一个表(betyg_category)中,我存储了每个类别的名称和名称,如下所示:

问题:

我该如何构建一个大数组,从超级级别的类别开始,一直到较低级别的项目

换句话说,我希望数组看起来像:

Litteratur (Category = 1)
    Integration av källorna (Item = 2)
    Belysning av egna resultat (Item = 3)
    Referenser (Item = 4)
Validitet (Category = 2)
    Huvudsyfte (Item = 5)
    Oberoende och beroende variabler (Item = 6)
    Analysmetoderna (Item = 7)

    and so forth..

提前感谢您的建议。

假设您正在使用PDO:

$result = mysql_query("select * from betyg_category where CID IN($categories)");
$array = array();
while($mainrow = mysql_fetch_array($result)) {
$array[] = $mainrow['Item'] . "(Category = " .$mainrow['CID']. ")";
$child = mysql_query("select * from betyg_category where Parent = " .$mainrow['CID'] . "");
while($childrow = mysql_fetch_array($child)) {
$array[] = $childrow['Item'] . "(Item = " .$childrow['CID']. ")";
}
}
$sql = '
    SELECT
        a.CID,
        a.Item,
        a.Parent,
        IF(NOT a.Parent, (SELECT GROUP_CONCAT(CID) FROM betyg_category WHERE Parent = a.CID), NULL) AS catitems
    FROM
        betyg_category a
    ORDER BY
        a.CID';
$stmt = $pdo->query($sql);
$resultset = $stmt->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
$itemarray = array();

foreach($resultset as $row)
{
    if(!empty($row[0]['catitems']))
    {
        foreach(explode(',', $row[0]['catitems']) as $cid)
        {
            $itemarray[$row[0]['Item']][$cid] = $resultset[$cid][0]['Item'];
        }
    }
    elseif(!$row[0]['Parent']) // Account for categories with no items in it
    {
        $itemarray[$row[0]['Item']] = array();
    }
}
然后,您可以通过以下方式可视化阵列:

echo '<pre>';
print_r($itemarray);
echo '</pre>';

假设并希望您正在使用PDO:

$sql = '
    SELECT
        a.CID,
        a.Item,
        a.Parent,
        IF(NOT a.Parent, (SELECT GROUP_CONCAT(CID) FROM betyg_category WHERE Parent = a.CID), NULL) AS catitems
    FROM
        betyg_category a
    ORDER BY
        a.CID';
$stmt = $pdo->query($sql);
$resultset = $stmt->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
$itemarray = array();

foreach($resultset as $row)
{
    if(!empty($row[0]['catitems']))
    {
        foreach(explode(',', $row[0]['catitems']) as $cid)
        {
            $itemarray[$row[0]['Item']][$cid] = $resultset[$cid][0]['Item'];
        }
    }
    elseif(!$row[0]['Parent']) // Account for categories with no items in it
    {
        $itemarray[$row[0]['Item']] = array();
    }
}
然后,您可以通过以下方式可视化阵列:

echo '<pre>';
print_r($itemarray);
echo '</pre>';

你可以看到这个链接。。你可以看到这个链接。。我使用的是PDO,但是在你的代码中我得到了一个空白页,没有它,内容返回。考虑到所有列名和表名都正确,我基本上进行了复制/粘贴。在顶部,我检查了数据库连接,它正常工作。有什么不对劲吗?我使用的是MySQL,我的示例代码不应该向页面输出任何内容。它只是构建了一个数组,您可以使用我在第二个代码框中给出的代码将其可视化。当您打印
$itemarray
时,它会给您带来什么?它会给我一个空白页。考虑到db连接正常并且所有列和表名拼写正确,这是非常奇怪的。奇怪的是,它至少应该给你一些类似于
Array()
,但只是一个空白页?您是否有
错误报告(E|u STRICT | E|u ALL)这样您就得到了所有错误?一点错误都没有,我使用的是PHP版本5.2.17。你可以在这里找到数据库表:如果你想试试的话。我正在使用PDO,但是在你的代码中我得到一个空白页,没有它,内容返回。考虑到所有列名和表名都正确,我基本上进行了复制/粘贴。在顶部,我检查了数据库连接,它正常工作。有什么不对劲吗?我使用的是MySQL,我的示例代码不应该向页面输出任何内容。它只是构建了一个数组,您可以使用我在第二个代码框中给出的代码将其可视化。当您打印
$itemarray
时,它会给您带来什么?它会给我一个空白页。考虑到db连接正常并且所有列和表名拼写正确,这是非常奇怪的。奇怪的是,它至少应该给你一些类似于
Array()
,但只是一个空白页?您是否有
错误报告(E|u STRICT | E|u ALL)这样您就得到了所有错误?一点错误都没有,我使用的是PHP版本5.2.17。您可以在这里找到数据库表:如果您愿意尝试的话。