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