Сортировка массива ассоциаций по повторяющимся значениям в массиве ассоциаций - PullRequest
0 голосов
/ 26 апреля 2019

Я хотел бы отсортировать массив по дублирующему значению определенного ключа: я не хочу удалять дублирующийся элемент, но мне просто нужно отсортировать массив по дубликату

, например, у меня есть этот массив:

$data = array(
    array(
        "id" => 1,
        "name" => "Bruce Wayne",
        "city" => "Gotham",
        "gender" => "Male"
    ),
    array(
        "id" => 2,
        "name" => "Diana Prince",
        "city" => "Gotham",
        "gender" => "Male"
    ),
    array(
        "id" => 4,
        "name" => "Speedy Gonzales",
        "city" => "New Mexico",
        "gender" => "Male"
    ),    
    array(
        "id" => 3,
        "name" => "Diana Prince",
        "city" => "New Mexico",
        "gender" => "Female"
    ),

    array(
        "id" => 5,
        "name" => "Bruce Wayne",
        "city" => "Gotham",
        "gender" => "Male"
    ),
);

что я должен иметь в качестве ответа:

$data = array(
        "id" => 1,
        "name" => "Bruce Wayne",
        "city" => "Gotham",
        "gender" => "Male"
    ),
    array(
        "id" => 5,
        "name" => "Bruce Wayne",
        "city" => "Gotham",
        "gender" => "Male"
    ),
    array(
        "id" => 2,
        "name" => "Diana Prince",
        "city" => "Gotham",
        "gender" => "Male"
    ),
   array(
        "id" => 3,
        "name" => "Diana Prince",
        "city" => "New Mexico",
        "gender" => "Female"
    ),
    array(
        "id" => 4,
        "name" => "Speedy Gonzales",
        "city" => "New Mexico",
        "gender" => "Male"
    )
);

В моем коде у меня есть ассоциативный массив, который я хочу отсортировать по заданному ключу, не удаляя дублирующее значение, что все, что янужно Как я могу это сделать?спасибо

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Вы можете использовать usort

function compare($a, $b)
{
   if ($a["name"] == $b["name"]) {
    return 0;
   }
  return ($a["name"] < $b["name"]) ? -1 : 1;
}

usort($data,"compare");
0 голосов
/ 26 апреля 2019

Использовать многомерную сортировку через array_mutlisort() в сочетании с array_column() (чтобы выбрать, какой столбец является основой для сортировки). Эта функция является справочной, поэтому вам не нужно присваивать результат чему-либо обратно.

$data = array(...);
array_multisort(array_column($data, "name"), SORT_ASC, $data);
print_r($data);
...