开发者

Explode several newlines into multidimensional array with php

开发者 https://www.devze.com 2023-02-16 06:14 出处:网络
I have a .txt document set up like this: HAYLE08 VALUE X VALUE Y BRUNO10 VALUE X VALUE Y Which needs to processed to a multidimensional array like this:

I have a .txt document set up like this:

HAYLE08
VALUE X
VALUE Y

BRUNO10
VALUE X
VALUE Y

Which needs to processed to a multidimensional array like this:

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

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

)

Reading the file into php is no problem and exploding the different chunks of 3-lines is very easy like this:

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

But of course, this will only give me the first step:

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

)

I've tried different foreaches and other loops or line explodes to populate the other dimensions, yet all in vain. I feel kind of stupid to ask suc开发者_高级运维h a simple question, but even after researching I just seem to be missing some basic array-logic here. Thank you!


Your almost there. You do want to use another loop / explode. Something like this:

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

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

print_r($return);


After exploding the chunks, you'll have to loop through the new array and explode the remaining strings into their own chunks.

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

Untested PHP code, but that should work for you. $tempArray will be the array you want.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号