Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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 多维阵列-维护数据完整性_Php - Fatal编程技术网

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;
    }
}

说得好,我已经更新了问题。谢谢你