PHP- Remove duplicate value from multidimensional array

How can I remove duplicate values from a multi-dimensional array in PHP?

Example array:

   Array
(
    [choice] => Array
        (
            [0] => Array
                (
                    [day] => Monday
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [name] => BI
                                    [time] => 10:00 
                                    [location] =>  B123
                                )
                            [1] => Array
                                (
                                    [name] => BI
                                    [time] => 11:00 
                                    [location] =>  A123
                                )
                        )
                )

            [1] => Array
                (
                    [day] => Tuesday
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [name] => BI
                                    [time] => 10:00 
                                    [location] =>  B123
                                )
                            [1] => Array
                                (
                                    [name] => BI
                                    [time] => 11:00 
                                    [location] =>  A123
                                )
                        )
                    )
        )
)

I'd like to remove those with duplicate name. So i only want to keep one subject each day.

my code so far:

$taken = array();
foreach($subject_list['choice'][0]["value"] as $key =>$item )
{ 
    if(!in_array($item['name'], $taken)) 
    {
        $taken[] = $item['name'];
    }else 
    {
        unset($flight_list['choice'][0]["value"][$key]);
    }

}

OUTPUT of the code above (which is obviously wrong):

Array
(
    [choice] => Array
        (
            [0] => Array
                (
                    [day] => Monday
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [name] => BI
                                    [time] => 10:00 
                                    [location] =>  B123
                                )
                        )
                )

            [1] => Array
                (
                    [day] => Tuesday
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [name] => BI
                                    [time] => 10:00 
                                    [location] =>  B123
                                )
                            [1] => Array
                                (
                                    [name] => BI
                                    [time] => 11:00 
                                    [location] =>  A123
                                )
                        )
                    )
        )
)

Anyone can help me how can i remove same class name at Tuesday.

Answers


If you want to keep the first set of unique values in each value batch in terms of name, then just create a temporary container for that. If you already have pushed it, then don't process anything, after the gathering, overwrite the batch using foreach with & reference:

foreach($subject_list['choice'] as &$items) {
    $temp = array(); // temporary container for current iteration
    foreach($items['value'] as $value) {
        if(!isset($temp[$value['name']])) { // if its new
            $temp[$value['name']] = $value; // push the batch using the key name
        }
    }
    $items['value'] = $temp; // apply unique value in the end of this batch
}

Sample Output


Need Your Help

Spring WebFlow - NullPointerException in setter method - how to handle nicely

java spring spring-webflow

Is there a magic value to place in messages.properties to capture the error condition where a NullPointerException is thrown during a setter method, In the same way there is

Difference between php echo and return in terms of a jQuery ajax call

php jquery ajax return echo

I was having trouble getting a jQuery Ajax call's success function to work properly and it was pointed out to me that the reason was that my PHP function was using return $result when I should be u...

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.