我有当前的数组
array
161 =>
array
'cat_id' => string '5' (length=1)
'temp_id' => string '2' (length=1)
'prod_id' => string '44' (length=2)
162 =>
array
'cat_id' => string '3' (length=1)
'temp_id' => string '2' (length=1)
'prod_id' => string '44' (length=2)
164 =>
array
'cat_id' => string '2' (length=1)
'temp_id' => string '2' (lenth=1)
'prod_id' => string '45' (length=2)
我正在使用此函数删除重复的数组值:
function removeDupes($array) {
$temp = array();
foreach ($array as $k => &$v) {
if (in_array($v['prod_id'],$temp)) {
unset($array[$k]);
}
$temp[] = $v['prod_id'];
}
return $array;
}
如果prod_id
在前一个数组中是重复的,则会删除数组中的任何重复值。
我想维护产品的完整类别ID列表,此时,当我取消设置整个key =>值对时,这些列表会被删除。
有没有人有任何想法我能做到这一点?
根据评论编辑:
我正在寻找这样的结果:
array
161 =>
'cat_id' => array('5','3')
'prod_id' => 44
所以我删除了重复产品ID的重复数组条目,但保留了类别ID。我希望有所帮助。
答案 0 :(得分:1)
也许是这样的:
$input = array(); // define your array
$output = array(); // here will be output
$temp = array();
foreach($input as $key => $value)
{
if (isset($temp[$value['prod_id']]))
{
$output[$temp[$value['prod_id']]]['cat_id'][] = $value['cat_id'];
}
else
{
$output[$key] = array(
'cat_id' => array($value['cat_id']),
'prod_id' => $value['prod_id']
);
$temp[$value['prod_id']] = $key;
}
}
答案 1 :(得分:0)
我想到的第一件事就是遍历你的结构,构建一个array_index =>的帮助结构。首次出现的prod_id(对于该示例阵列(44 => 161,45 => 164))。除了第一个,你同时删除prod_id到第一个找到的。