-2

这纯粹与数组合并有关

我有一个数组如下(这是通过mysql查询查询数据库后得到的):

Array

(
    [0] => Array
        (
            [id] => 9083
            [devicecount] => 3
            [device] => Android
        )

    [1] => Array
        (
            [id] => 9083
            [devicecount] => 17
            [device] => computer
        )

    [2] => Array
        (
             [id]=> 9083
            [devicecount] => 1
            [device] => Iphone
        )

    [3] => Array
        (
            [id] => 9083
            [devicecount] => 3
            [device] => mobile
        )

    [4] => Array
        (
            [id] => 9085
            [devicecount] => 4
            [device] => Android
        )

    [5] => Array
        (
            [id] => 9085
            [devicecount] => 4
            [device] => computer
        )

    [6] => Array
        (
            [id] => 9090
            [devicecount] => 2
            [device] => computer
        )

    [7] => Array
        (
            [id] => 9090
            [devicecount] => 2
            [device] => Iphone
        )

    [8] => Array
        (
            [id] => 9092
            [devicecount] => 4
            [device] => Android
        )

    [9] => Array
        (
            [id] => 9092
            [devicecount] => 3
            [device] => computer
        )

    [10] => Array
        (
            [id] => 9092
            [devicecount] => 4
            [device] => Iphone
        )

    [11] => Array
        (
            [id] => 9092
            [devicecount] => 1
            [device] => mobile
        )

)

在上面的数组中,有重复的 id 索引。我需要消除这些重复并获得一个新数组,如下所示:

Array(

[0] => Array
        (
            [id] => 9083
            [Android]=>3
           [computer]=>17
            [iphone]=>1
          [mobile]=>3
        )

    [1] => Array
        (
            [id] => 9085
          [Android]=>4
           [computer]=>4
            [iphone]=>N/A
            [mobile]=>N/A

        )

    [2] => Array
        (
            [id] => 9090
          [Android]=>N/A
           [computer]=>2
            [iphone]=>2
 [mobile]=>N/A
        )

    [3] => Array
        (
            [id] => 9092
          [Android]=>4
           [computer]=>3
            [iphone]=>4
 [mobile]=>1
        )



)

在新数组中,无论哪个索引没有设置,它都必须是 N/A 并且旧数组中的设备值将成为新数组中的键。

4

1 回答 1

0

试试这个 :

$res    = array();          
foreach($Your_array as $vals){
    $res[$vals["prankletteid"]]['id'] = $vals["prankletteid"];
    $res[$vals["prankletteid"]][$vals["device"]]  = $vals["devicecount"];
    /*To check devices, if not add NA*/
    if(!array_key_exists("mobile",$res[$vals["prankletteid"]])){
       $res[$vals["prankletteid"]]["mobile"]  = "NA";
    }
    if(!array_key_exists("Android",$res[$vals["prankletteid"]])){
       $res[$vals["prankletteid"]]["Android"]  = "NA";
    }
    if(!array_key_exists("computer",$res[$vals["prankletteid"]])){
       $res[$vals["prankletteid"]]["computer"]  = "NA";
    }
    if(!array_key_exists("iphone",$res[$vals["prankletteid"]])){
       $res[$vals["prankletteid"]]["iphone"]  = "NA";
    }
}
$result  = array_values($res);
echo "<pre>";
print_r($result);
于 2013-05-28T13:08:59.130 回答