Разнесите несколько новых строк в многомерный массив с помощью php - PullRequest
0 голосов
/ 13 марта 2011

У меня есть документ .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

)

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

Ответы [ 2 ]

1 голос
/ 13 марта 2011

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

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

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

print_r($return);
1 голос
/ 13 марта 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 будет массив, который вы хотите.

...