Как преобразовать массив в другой вид?

169
25 декабря 2018, 16:50

Есть такой массив

Array
(
    [0] => Array
        (
            [content] => 12
            [id] => tab-about-1
            [name] => Описание 1
        )
    [1] => Array
        (
            [content] => 13
            [id] => tab-about-2
            [name] => Описание 2
        )
    [2] => Array
        (
            [content] => 14
            [id] => tab-service
            [name] => Описание 3
        )
    [3] => Array
        (
            [content] => 15
            [id] => tab-service-1
            [name] => Описание 4
        )
)

Как преобразовать его в такой вид:

Array
(
    [about] => Array
        (
            [0] => Array
                (
                    [content] => 12
                    [id] => tab-about-1
                    [name] => Описание 1
                )
            [1] => Array
                (
                    [content] => 13
                    [id] => tab-about-2
                    [name] => Описание 2
                )
        )
    [service] => Array
        (
            [0] => Array
                (
                    [content] => 14
                    [id] => tab-service
                    [name] => Описание 3
                )
            [1] => Array
                (
                    [content] => 15
                    [id] => tab-service-1
                    [name] => Описание 4
                )
        )
)

Как понимаю, нужно отфильтровать все с использованием регулярного выражения?

Answer 1

Как понимаю, нужно отфильтровать все с использованием регулярного выражения?

примерно так, да.

$result = [];
foreach($data as $d){
    preg_match('/tab-([^-]*)/', $d['id'], $matches);
    $key = $matches[1];
    if(!array_key_exists($key, $result)) $result[$key] = [];
    $result[$key][] = $d;
}
print_r($result);
Answer 2

Можно обойтись без регулярного выражения, например так:

$result = [];
foreach ($data as $row) {
    [, $id] = explode('-', $row['id']);
    if ($id) {
        $result[$id][] = $row;
    }
}
READ ALSO
PHP регистрация при выключенных куки

PHP регистрация при выключенных куки

Уважаемые специалисты помогите с вопросомНа сайте есть форма регистрации, в качестве логина указывается E-mail, после заполнения полей формы...

172
Что я делаю не так с запросами SQL в LARAVEL?

Что я делаю не так с запросами SQL в LARAVEL?

Собственно, вот моя функция контроля флуда

164
Несколько sql запросов

Несколько sql запросов

Всем ПриветВопрос может и банальный но решения пока не нашел

149