PHP Создать массив, в котором повторяющиеся элементы из другого массива являются ключами

avatar
Fadlan
8 апреля 2018 в 11:28
45
1
-1

Итак, у меня есть массив, который выглядит следующим образом:

Array
(
    [0] = Array
        (
            [miasto] = Tarnów
            [ulica] = ul. Kościuszki 120
            [link] = <a class="cfs-hyperlink" href="/strona-w-budowie" target="_blank"><span class="text"></span></a>
        )

    [1] = Array
        (
            [miasto] = Tarnów
            [ulica] = ul. Pułaskiego 12
            [link] = <a class="cfs-hyperlink" href="/strona-w-budowie" target=""><span class="text"></span></a>
        )

    [2] = Array
        (
            [miasto] = Kraków
            [ulica] = ul. Test 12
            [link] = <a class="cfs-hyperlink" href="/strona-w-budowie" target=""><span class="text"></span></a>
        )

)

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

Array
(
    [Tarnów] = Array
        (
            [0] = <a class="cfs-hyperlink" href="/strona-w-budowie" target="_blank"><span class="text">ul. Kościuszki 120</span></a>
            [1] = <a class="cfs-hyperlink" href="/strona-w-budowie" target="_blank"><span class="text">ul. Pułaskiego 12</span></a>
        )

    [Kraków] = Array
        (
            [0] = <a class="cfs-hyperlink" href="/strona-w-budowie" target="_blank"><span class="text">ul. Test 12</span></a>

        )

)

Извините, если вопрос не такой конкретный, но я нигде не мог найти, как даже назвать что-то подобное в поиске google и стека. Пожалуйста, будь любезен и хотя бы слегка кивни, что в Мире я должен искать что-то настолько странное, как это.

РЕДАКТИРОВАТЬ: Добавление моего кода: pastebin.com/jrDZLANZ

Источник
u_mulder
8 апреля 2018 в 11:44
1

Итак, вы пробовали что-нибудь или просто ждете кода?

Fadlan
8 апреля 2018 в 11:56
0

Я, конечно, пытался, но у меня пока не очень хорошо. Я могу показать код здесь: pastebin.com/jrDZLANZ

u_mulder
8 апреля 2018 в 11:59
0

Ваш код должен быть размещен здесь. Пожалуйста, прочитайте Как спрашивать и ознакомьтесь с этим сайтом.

Ответы (1)

avatar
Vinay
8 апреля 2018 в 11:50
0

Предполагая, что ваш входной массив $arr, вы можете использовать это

$result = array();

foreach ($arr as $val)
{
    $b = explode('</span></a>' , $val['link']);
    $result[$val['miasto']][] = $b[0] .  $val['ulica'] . '</span></a>';
}

print_r($result); 
Fadlan
8 апреля 2018 в 12:00
0

Дайум, чувак, это потрясающе. Выглядит очень хорошо, а самое главное работает. Но по-прежнему нет $val['ulica'] внутри диапазона $val['link']. можешь помочь и с этим? Я мог бы как-то взорвать это в коде. Потому что мне бы хотелось, чтобы конечный результат был ul li с двумя уровнями.

Fadlan
8 апреля 2018 в 12:29
0

Мужик, ты святой. Я пытался что-то сделать с этим, например, 4 часа.