I'm building out a filtering function that loops through provided data to generate select field options based on a declared array key.
I can get my function to output the expected unique results when the key value is a string, however when I set the key to an array, I only get the first 1 result.
This is the example I have:
    /* ----------------------
    Dump the output
---------------------- */
function dump($data) {
  if(is_array($data)) { //If the given variable is an array, print using the print_r function.
    print "<pre>\n";
    print_r($data);
    print "</pre>";
  } elseif (is_object($data)) {
    print "<pre>\n";
    var_dump($data);
    print "</pre>";
  } else {
    print "=========> ";
    var_dump($data);
    print " <=========";
  }
}
$data = '{"filter":[{"department":null,"location":{"country":"United States","country_code":"US","region":"New York","region_code":"NY","city":"New York","zip_code":null,"telecommuting":false}},{"department":null,"location":{"country":"United Kingdom","country_code":"GB","region":"England","region_code":"England","city":"Leeds","zip_code":null,"telecommuting":false}},{"department":"Project Management","location":{"country":"United Kingdom","country_code":"GB","region":"England","region_code":"England","city":"Manchester","zip_code":null,"telecommuting":false}},{"department":"Project Management","location":{"country":"United Kingdom","country_code":"GB","region":"England","region_code":"England","city":"London","zip_code":null,"telecommuting":false}},{"department":"Customer Success","location":{"country":"United Kingdom","country_code":"GB","region":"England","region_code":"England","city":"London","zip_code":null,"telecommuting":false}},{"department":null,"location":{"country":"United Kingdom","country_code":"GB","region":"England","region_code":"England","city":"London","zip_code":null,"telecommuting":false}}]}';
$response = json_decode($data, true);
// get unique values in array
function getUniqueValues($array, $args) {
    $result = array();
    foreach($array as $value) {
      if(!empty($value[$args])) {
        if(is_array($value[$args])) {
          foreach ($value[$args] as $k => $v) {
            $result[$k] = $v;
          }
        } else {
          $result[] = $value[$args];
        }
      }
    }
    return array_unique($result);
}
dump(getUniqueValues($response['filter'], 'location'));
dump(getUniqueValues($response['filter'], 'department'));
The output for any key matching 'department', outputs the expected results
Array 
(
    [0] => Project Management
    [2] => Customer Success
)
However when referencing a key with an array as the value I don't get the expected results.
Array
(
    [country] => United Kingdom
    [country_code] => GB
    [region] => England
    [city] => London
    [zip_code] => 
)
What I was expecting to see was something similar to this.
Array
(
    [0] => (
        [country] => United Kingdom
        [country_code] => GB
        [region] => England
        [city] => London
        [zip_code] => 
    ),
    [1] => (
        [country] => United Kingdom
        [country_code] => GB
        [region] => England
        [city] => Manchester
        [zip_code] => 
    )
)
I think I seem to of missed something, or I'm misunderstanding how array_unique($myArray) works. In any case how do I go about solving this to give the correct output?
Any help would be greatly appreciated.
Thanks :)
