Ассоциативный массив из многомерного массива - PullRequest
0 голосов
/ 01 декабря 2019

Я новичок в PHP, нужна небольшая помощь. Для некоторых это может быть легко, но мне трудно.

У меня есть массив

Array ( [0] => page-18 [1] => page-20 )

, который я хотел бы взорвать еще раз с помощью '-':

$mainStringBrk = array('page-18', 'page-20');
$finalArray = array();
foreach($mainStringBrk as $bString){
    $mainStringBrkBrk = explode('-', $bString);
    $finalArray[$mainStringBrkBrk[0]] = $mainStringBrkBrk[1];
}
echo '<pre>'; print_r($finalArray);

Когда я это делаю, он выводит только последний ключ и значение массива.

Array ( page => 20 )

Мой желаемый вывод:

Array ( page => 18, page => 20 )

Мне интересно, может ли кто-нибудь помочь мне вправильное направление.

1 Ответ

1 голос
/ 01 декабря 2019

Вы не можете достичь желаемого результата, так как невозможно иметь массив с одинаковыми ключами;Вот почему у вас есть только один результат в вашем выводе. Вы можете изменить выходную структуру на 2-мерный массив, чтобы обойти это, например:

$mainStringBrk = array('page-18', 'page-20');
$finalArray = array();
foreach($mainStringBrk as $bString){
    $mainStringBrkBrk = explode('-', $bString);
    $finalArray[$mainStringBrkBrk[0]][] = $mainStringBrkBrk[1];
}
print_r($finalArray);

Выход:

Array
(
    [page] => Array
        (
            [0] => 18
            [1] => 20
        )
)

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

$finalArray = array();
foreach($mainStringBrk as $bString){
    $mainStringBrkBrk = explode('-', $bString);
    $finalArray[] = array($mainStringBrkBrk[0] => $mainStringBrkBrk[1]);
}
print_r($finalArray);

Вывод:

Array
(
    [0] => Array
        (
            [page] => 18
        )
    [1] => Array
        (
            [page] => 20
        )
)

Демонстрация на 3v4l.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...