Взорвите несколько новых строк в многомерный массив с помощью php

У меня есть документ .txt, настроенный следующим образом:

HAYLE08
VALUE X
VALUE Y

BRUNO10
VALUE X
VALUE Y

Что необходимо обработать в многомерный массив следующим образом:

Array
(
    [HAYLE08] => Array
        (
            [0] => Value X
            [1] => Value Y
        )

    [BRUNO10] => Array
        (
            [0] => Value X
            [1] => Value Y
        )

)

Чтение файла в php не проблема, а взорвать разные фрагменты из 3 строк очень просто:

$file = file_get_contents('test.txt'); 
$lines = explode( "\n\n", $file );

Но, конечно, это даст мне только первый шаг:

Array
(
    [0] => HAYLE08
VALUE X
VALUE Y
    [1] => BRUNO10
VALUE X
VALUE Y

)

Я пробовал разные foreachs и другие циклы или линии, чтобы заполнить другие измерения, но все напрасно. Я чувствую себя глупо, задавая такой простой вопрос, но даже после изучения мне кажется, что здесь не хватает некоторой базовой логики массива. Благодарю вас!


person Jurgen    schedule 12.03.2011    source источник


Ответы (2)


Ты почти там. Вы хотите использовать другой цикл/взорвать. Что-то вроде этого:

$lines = explode( "\n\n", $file );
$return = array();

foreach ($lines as $line) {
  $items = explode("\n", $line);
  $return[array_shift($items)] = $items;
}

print_r($return);
person RDL    schedule 12.03.2011

После разделения фрагментов вам нужно будет пройтись по новому массиву и разбить оставшиеся строки на отдельные фрагменты.

$tempArray = array( );
foreach( $lines as $line )
{
    $chunks = explode( "\n", $line );
    for( $i = 1; $i < sizeof( $chunks ); $i++ )
        $tempArray[$chunks[0]][] = $chunks[$i];
}

Непроверенный код PHP, но это должно сработать для вас. $tempArray будет массивом, который вы хотите.

person Mike S    schedule 12.03.2011
comment
Хотя я немного предпочитаю решение foreach, это тоже сработало отлично, так что спасибо! - person Jurgen; 13.03.2011