php данные из текстового файла в многомерный массив не работает, но нет ошибок консоли

Я написал код для чтения данных из текстового файла.
Данные выглядят следующим образом:

11: 12:12: test titel 1
12: 13:13: test titel 2
13: 14:14: тест Тит 3

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

 <?php
$filename = "data.txt";
$fp = fopen($filename, "r");
$content = fread($fp, filesize($filename));
$lines = explode("n", $content);
$parts = null;
fclose($fp);
print_r($lines);
echo sizeof($lines);
for ($i=0; $i < sizeof($lines)-1 ; $i++) {    //the minus 1 corrects the empty line automatically added when saving the data.txt file
  //$tempParts[] = explode(":", $lines[i]);
  //array_push($parts, $tempParts);
}
//echo "<br/>"
echo "all parts: "
//for ($row=0; $row < sizeof($lines)-1; $row++) {
//  for ($col=0; $col < sizeof($parts[$row]); $col++) {
//echo $parts[$row][$col];
//  }
//}
?>

2 ответа

  1. Я не уверен, чтобы понять, что именно вы хотите, но вы можете попробовать это :

    if (!$fp = fopen("data.txt","r")) {
        die("fail to open");
    }else {
        $all = array();
        $row = 1;
        while(!feof($fp)) { // foreach line
            $ligne = fgets($fp,255); // get line content
            $cols = explode(':', $line); // gets cols
            $all[$row++] = $cols; // put cols on current row 
        }    
        var_dump($all); // dump all data stored by row
        fclose($fp);
    }
    
  2. Я думаю, preg_split сделает то, что вы хотите.

    $filename = "data.txt";
    $fp = fopen($filename, "r");
    $content = fread($fp, filesize($filename));
    
    //$content = "11:12:12:test titel 1
                12:13:13:test titel 2
                13:14:14:test titel 3";
    
    $arr = preg_split("/(:|\n)/" ,$content);
    
    
    var_dump($arr);
    

    Смотрите здесь: http://www.phpliveregex.com/p/hNH
    Нажмите на preg_split в правой части экрана, чтобы заставить его работать

    Может быть, это работает лучше для вас?

    preg_match_all("/(\d+):(\d+):(\d+):(.*)/", $content, $arr);
    

    Нажмите preg_match_all:
    http://www.phpliveregex.com/p/hNW