如何在php中将具有公共元素的子数组删除到另一个子数组

ita*_*aka 1 php multidimensional-array

可能的重复:
如何从 PHP 中的多维数组中删除重复值

抱歉写得太快了,我正在工作……抱歉。现在我认为解释得很好。我想删除带有子元素 [title] common、equals 的子数组,我只想要一个元素,而不是重复,我该怎么做?我做到了,但我认为必须有一种更优雅的方式才能做到这一点。我尝试使用以下代码:

static function remove_duplicates_titles($deals){
       $result = array();
       $deal_repeated=false;
       foreach ($deals as $index=>$deal) {
           foreach ($deals as $deal_2) {
               //discover if the subarray has the element title repeated is repeated or not
               if ($deal['title'] == $deal_2['title']){ 
                    $deal_repeated=true;
                    unset($deal_2);  
               }
               else{ 
                    $deal_repeated=false;                          
                }

           }
          //if the array has no the element (title) repeated with another....
          if(!$deal_repeated){
                   $result[]=$deal;
           }
       }

       return $result;
Run Code Online (Sandbox Code Playgroud)

}

Array
(
[0] => Array
    (
        [id] => abc
        [title] => bbb
    )

[1] => Array
    (
        [id] => ghi
        [title] => aaa
    )

[2] => Array              //I should to remove this subarray (or the other, only one of both)
    (
        [id] => mno
        [title] => pql     //this is common
    )

[3] => Array
    (
        [id] => abc
        [title] => def
    )

[4] => Array
    (
        [id] => ghi
        [title] => mmm
    )

[5] => Array             //I should to remove this subarray (or the other), only one of both
    (
        [id] => mno
        [title] => pql   //this is common
    )
Run Code Online (Sandbox Code Playgroud)

Tou*_*uki 5

此函数将保留它找到的第一个元素,并根据您提供的键删除任何重复项

$arr = Array (
    Array ( 'id' => 'abc', 'title' => 'bbb' ),
    Array ( 'id' => 'ghi', 'title' => 'aaa' ),
    Array ( 'id' => 'mno', 'title' => 'pql' ),
    Array ( 'id' => 'abc', 'title' => 'def' ),
    Array ( 'id' => 'ghi', 'title' => 'mmm' ),
    Array ( 'id' => 'ere', 'title' => 'pql' )
);
function arrayUniqueFromKey(array $arr,$key)
{
    $titles = array();$ret = array();
    foreach ($arr as $v) {
        if (!in_array($v[$key],$titles)) {
            $titles[] = $v[$key];
            $ret[] = $v;
        }
    }
    return $ret;
}
print_r(arrayUniqueFromKey($arr,'title'));
Run Code Online (Sandbox Code Playgroud)

http://codepad.org/Y3gsibRM