总结,重组并“平整”整个多维数组

时间:2015-05-14 11:17:40

标签: php arrays

目前我有一个像:

这样的数组
$post_data=$wpdb->get_results("SELECT * FROM `ucsite_posts` WHERE `post_type` LIKE 'uc_university_review' order by `post_date` desc LIMIT 1");

然后我试图重新组合/重新制作阵列取决于他们的Array( [0] => Array([range]=>1-10 [count]=>3 [type]=>A) [1] => Array([range]=>11-20 [count]=>6 [type]=>A) [2] => Array([range]=>21-30 [count]=>5 [type]=>A) [3] => Array([range]=>1-10 [count]=>5 [type]=>B) [4] => Array([range]=>11-20 [count]=>3 [type]=>B) [5] => Array([range]=>21-30 [count]=>8 [type]=>B) [6] => Array([range]=>1-10 [count]=>4 [type]=>C) [7] => Array([range]=>11-20 [count]=>3 [type]=>C) [8] => Array([range]=>21-30 [count]=>6 [type]=>C) [9] => Array([range]=>1-10 [count]=>3 [type]=>D) [10] => Array([range]=>11-20 [count]=>7 [type]=>D) ,预期的输出将是:

type

我试过Array( [0] => Array([type]=>A [1-10]=>3 [11-20]=>6 [21-30]=>5) [1] => Array([type]=>B [1-10]=>5 [11-20]=>3 [21-30]=>8) [2] => Array([type]=>C [1-10]=>4 [11-20]=>3 [21-30]=>6) [3] => Array([type]=>D [1-10]=>3 [11-20]=>7) ) ,但不是我想要的......

Example Here.

提前致谢。

1 个答案:

答案 0 :(得分:1)

这应该适合你:

这里我只是循环遍历整个数组,然后用isset()检查结果数组是否已经有一个类型相同的innerArray(例如$result["A"]),如果不是,我将类型添加为值内部数组(.eg $result["A"]["type"] = "A";)。

完成此项检查后,我只需将rangecount添加到每种类型(例如$result["A"]["1-10"] = 3;

最后,我只需使用array_values()重新索引整个$result数组。

<?php

    foreach($arr as $k => $v) {
        if(!isset($result[$v["type"]]))
            $result[$v["type"]]["type"] = $v["type"];
        $result[$v["type"]][$v["range"]] = $v["count"];
    }
    $result = array_values($result);

    print_r($result);

?>

输出:

Array
(
    [0] => Array
        (
            [type] => A
            [1-10] => 3
            [11-20] => 6
            [21-30] => 5
        )
    //...

)