Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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 Eliminite复制并形成一个新数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php Eliminite复制并形成一个新数组

Php Eliminite复制并形成一个新数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,这是一个纯粹与数组合并相关的问题 我有一个数组如下(这是通过mysql查询数据库得到的): 在上面的数组中,存在重复的id索引。我需要消除这些重复项并获得一个新阵列,如下所示: Array( [0] => Array ( [id] => 9083 [Android]=>3 [computer]=>17 [iphone]=>1 [mobi

这是一个纯粹与数组合并相关的问题

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

在上面的数组中,存在重复的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,并且旧数组中的设备值将成为新数组中的键。

尝试以下操作:

$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);
$res=array();
foreach($vals形式的_数组){
$res[$vals[“prankletteid”]['id']=$vals[“prankletteid”];
$res[$vals[“prankletteid”][$vals[“设备”]]=$vals[“设备计数”];
/*若要检查设备,请添加NA*/
如果(!array_key_存在(“mobile”、$res[$vals[“prankletteid”]])){
$res[$vals[“prankletteid”][“mobile”]=“NA”;
}
如果(!array_key_存在(“Android”、$res[$vals[“prankletteid”]])){
$res[$vals[“prankletteid”][“Android”]=“NA”;
}
如果(!array_key_存在(“计算机”、$res[$vals[“prankletteid”]])){
$res[$vals[“prankletteid”][“computer”]=“NA”;
}
如果(!array_key_存在(“iphone”、$res[$vals[“prankletteid”]])){
$res[$vals[“prankletteid”][“iphone”]=“NA”;
}
}
$result=数组_值($res);
回声“;
打印(结果);

到目前为止您尝试了什么/您遇到了什么问题?(StackOverflow的目的不仅仅是为您做工作。)到目前为止,您做了哪些尝试?我们不仅仅是在这里做您的工作。您可以包括SQL查询吗?因为这可以解决,所以以后不需要在PHP中处理它。可能您可以使用prankletteid值作为数组键。如果是这样,代码很简单
$result=array();foreach($item形式的数组){if(!isset($result[$item['prankletteid']])$result[$item['prankletteid']]=array();$result['prankletteid'][$item['device']]=$item['devicecount'];}
我想他想要的是根据
prankletteid
进行分组,并计算每个
pranakletteid
拥有多少
computer/iphone/Android
@piotrekkr:是的..我会编辑答案编辑答案请检查now@PrasanthBendra谢谢你的回答。我能够将这些阵列组合成一个新的阵列。如果缺少任何索引,我必须在数组中插入N/A。我怎样才能做到这一点?请帮助。@user2428553:但为什么要为缺少的内容添加NA?这将是一个不必要的数据。如果您在其他地方使用此数组,您可以检查数组索引并查找特定设备是否存在(使用
数组\u键\u存在
函数)
$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);