2011-03-12 50 views
0

我有一个.txt文件设置是这样的:爆炸几个换行符到多维数组与PHP

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等循环或线爆炸来填充其他维度,但一切都是徒劳。我觉得有些愚蠢的问这样一个简单的问题,但即使经过研究,我似乎在这里错过了一些基本的数组逻辑。 谢谢!

回答

1

你几乎在那里。你确实想要使用另一个循环/爆炸。这样的事情:

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

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

print_r($return); 
+0

谢谢!这就像一个魅力。 – Jurgen 2011-03-12 23:42:09

1

爆炸块后,你必须遍历新的数组,并将其余的字符串分解成它们自己的块。

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

未经测试的PHP代码,但这应该适合您。 $tempArray将是你想要的数组。

+0

虽然我稍微喜欢foreach解决方案,这一个工作完美,以及谢谢! – Jurgen 2011-03-12 23:43:23