我想將基於文本的記帳文件轉換爲使用php的數組。每個驗證線的結構如下:在php中迭代文本文件,多行作爲一個迭代或子迭代也許
#VER A 14 20160715 "mats" 20161016
{
#TRANS 1930 {} -3000.00 20160715 "mats"
#TRANS 2893 {} 3000.00 20160715 "mats"
}
#VER A 15 20160719 "Mats" 20161016
{
#TRANS 1930 {} -20000.00 20160719 "Mats"
#TRANS 2893 {} 20000.00 20160719 "Mats"
}
所以我wan't遍歷每行開始#VER然後subiterate開始與花括號之間#TRANS的線{}。在subiterate部分有問題。我的目標是一個數組,如下面的(希望沒有錯誤...)
Array
(
[#VER] => Array
(
[A14] => Array
(
[verdatum] => 20160714
[vertext] => mats
[trans] => Array
(
[0] => Array
(
[transaccount] => 1930
[transamount] => -3000.00
[transdate] => 20160715
[transtext] => mats
)
[1] => Array
(
[transaccount] => 2893
[transamount] => 3000.00
[transdate] => 20160715
[transtext] => mats
)
)
)
[A15] => Array
(
[verdatum] => 20160719
[vertext] => Mats
[trans] => Array
(
[0] => Array
(
[transaccount] => 1930
[transamount] => -20000.00
[transdate] => 20160719
[transtext] => Mats
)
[1] => Array
(
[transaccount] => 2893
[transamount] => 20000.00
[transdate] => 20160719
[transtext] => Mats
)
)
)
)
)
到目前爲止的代碼:
foreach($contentsarray as $line_value)
{
if (substr($line_value,0,4)=="#VER") {
list($ver, $serie, $vernr, $verdatum, $vertext, $verregdatum, $versign) = str_getcsv($line_value, ' ');
$verif[$ver][$serie.$vernr]['verdatum']= $verdatum;
$verif[$ver][$serie.$vernr]['vertext']= $vertext;
WHAT TO DO HERE?
}
}
任何指導大加讚賞。
有很多方法可以做到這一點,但您必須從決定最終結果是什麼開始。我們可以在你的代碼中看到一些暗示,但這還遠遠沒有完成。然後,您可以通過跟蹤您所處的狀態逐行解析它,但也可以使用行指針並使用代碼的結構來保存狀態。我想你打算做後者。 –
請提供具體信息,輸入,所需輸出和當前輸出。 –
非常感謝迄今。上面添加了所需的輸出 –