Задать вопрос
@kimqar202

Как отсортировать массив игнорируя определённое слово в строке?

Есть несколько массивов, которые отсортированы по буквам:
[А] => Array
        (
            [0] => Array
                (
                    [NAME] => Абдоминальная хирургия
               )
[Б] => Array
        (
            [0] => Array
                (
                    [NAME] => Бариатрическая хирургия
                )
[В] => Array
        (
            [0] => Array
                (
                    [NAME] => Венерологическая клиника
                )


Всё отсортировано по первому слову, но в букве "д" нужно сделать так, чтоб у значений которых есть первое слово "десткий/детская" сортировались по второму слову.

Например:
В массиве "Д" есть значения:

[Д] => Array
        (
            [0] => Array
                (
                    [NAME] => Детская клиника
                )
            [1] => Array
                (
                    [NAME] => Дерматология
                )
            [2] => Array
                (
                    [NAME] => Детская урология
                )


Нужно сделать так, чтобы "детская клиника" попала в массив с буквой К, а "детская урология" в массив с буквой У. Таких значений на странице много. Как это сделать?
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
проще перед группировкой (сортировкой) подготовить строки
например вырезать из них слова детск(ий|ая|ое)

<?php
$names = [
    'Абдоминальная хирургия',
    'Бариатрическая хирургия',
    'Бариатрическая хирургия',
    'Венерологическая клиника',
    'Детская клиника',
    'Дерматология',
    'Детская урология',
    'Детский тест',
    'Детское тесто',
];

$result = [];
foreach ($names as $name) {
    $l = mb_strtoupper(mb_substr(
        trim(preg_replace('!детск(ий|ая|ое)!usi', '', $name)),
        0, 1
    ));

    $result[$l][] = ['NAME' => $name];
}

print_r($result);


...
    [У] => Array
        (
            [0] => Array
                (
                    [NAME] => Детская урология
                )
        )
    [Т] => Array
        (
            [0] => Array
                (
                    [NAME] => Детский тест
                )
            [1] => Array
                (
                    [NAME] => Детское тесто
                )
        )
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽