【问题标题】:PHP mysql query result into multidimensional arrayPHP mysql查询结果转换为多维数组
【发布时间】:2015-09-02 11:20:26
【问题描述】:
while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) {    
$basicinfo[] = array('schlid' => $selected_row['schlid'], 'name' => $selected_row['name'], 'class' => $selected_row['class']);
}

上面的数组制作会产生一个有多个值的数组,数组看起来像这样

Array
(
    [0] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => Math 
        )

    [1] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => English 
        )

    [2] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => Math 
        )

    [3] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => English 
        )

    [4] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => Math 
        )

    [5] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => English 
        )

    [6] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => Math 
        )

    [7] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => English 
        )

    [8] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => Math 
        )

    [9] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => English 
        )

    [10] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => Math 
        )

    [11] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => English 
        )

)

但我可以通过在下面执行此操作来删除相同的值

$input = array_map("unserialize", array_unique(array_map("serialize", $basicinfo)));
$new_data = array_values($input); 

我会在下面得到这个

Array
(
    [0] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => Math 
        )

    [1] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [class] => English 
        )
)

现在我所做的是创建一个与此查询结果相同的多维数组

    while ($selected_row = $stmt - > fetch(PDO::FETCH_ASSOC)) {
         $tmp_key = $selected_row['schlid']; //adding a temp key
         $basicinfo[$tmp_key]['name'] = $selected_row['name'];
         $basicinfo[$tmp_key]['schlid'] = $selected_row['schlid'];
         $sudky = (isset($basicinfo[$tmp_key]['Class'])) ? count($basicinfo[$tmp_key]['Class']) : 0;
         $basicinfo[$tmp_key]['Class'][$sudky]['class'] = $selected_row['class'];
    }

从上面我得到的结果是

Array
(
    [015-08-0011-000-01] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [Class] => Array
                (
                    [0] => Array
                        (
                            [class] => Math 
                        )

                    [1] => Array
                        (
                            [class] => English 
                        )

                    [2] => Array
                        (
                            [class] => Math 
                        )

                    [3] => Array
                        (
                            [class] => English 
                        )

                    [4] => Array
                        (
                            [class] => Math 
                        )

                    [5] => Array
                        (
                            [class] => English 
                        )

                    [6] => Array
                        (
                            [class] => Math 
                        )

                    [7] => Array
                        (
                            [class] => English 
                        )

                    [8] => Array
                        (
                            [class] => Math 
                        )

                    [9] => Array
                        (
                            [class] => English 
                        )

                    [10] => Array
                        (
                            [class] => Math 
                        )

                    [11] => Array
                        (
                            [class] => English 
                        )

                )

        )

)

我想要的是

Array
(
    [015-08-0011-000-01] => Array
        (
            [schlid] => 015-08-0011-000-01
            [name] => John
            [Class] => Array
                (
                    [0] => Array
                        (
                            [class] => Math 
                        )

                    [1] => Array
                        (
                            [class] => English 
                        )
                )

        )

)

删除多维数组中的重复元素。 如果相关,上面的结果来自 php 中的print_r()

【问题讨论】:

    标签: php mysql arrays multidimensional-array


    【解决方案1】:

    您可以使用for循环检查在分配学生班级之前或处理包含重复班级的数组输出后使用array_unique。

    $basicinfo[$tmp_key]['Class'][0] = array_unique($basicinfo[$tmp_key]['Class'][0]); //<-The array that you don't want duplicates in. i modify the formating
    

    【讨论】:

    • 值得一试让我试试
    • 不用[0]也可以试试
    猜你喜欢
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2015-04-30
    • 2014-12-04
    • 2020-12-23
    相关资源
    最近更新 更多