Php 多维阵列-维护数据完整性
我得到了当前的数组Php 多维阵列-维护数据完整性,php,Php,我得到了当前的数组 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)
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\u id
在前一个数组中是重复的,则此操作将删除数组中的任何重复值
我想维护产品的完整类别id列表,目前,当我取消设置整个key=>value对时,这些id会被删除
有人知道我怎样才能做到这一点吗
根据评论编辑:
因此,我正在寻找类似的东西:
array
161 =>
'cat_id' => array('5','3')
'prod_id' => 44
因此,我删除了复制产品ID但保留类别ID的重复数组项。我希望这有帮助 我想到的第一件事是迭代您的结构,构建一个数组的帮助结构,即第一次出现的数组索引=>prod\u id(对于这个示例数组(44=>161,45=>164))。您删除除第一个之外的所有项目,同时将prod_id添加到找到的第一个项目中。可能类似以下内容:
$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;
}
}
说得好,我已经更新了问题。谢谢你