我想将基于文本的记帐文件转换为使用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?
}
}
任何指导大加赞赏。
有很多方法可以做到这一点,但您必须从决定最终结果是什么开始。我们可以在你的代码中看到一些暗示,但这还远远没有完成。然后,您可以通过跟踪您所处的状态逐行解析它,但也可以使用行指针并使用代码的结构来保存状态。我想你打算做后者。 –
请提供具体信息,输入,所需输出和当前输出。 –
非常感谢迄今。上面添加了所需的输出 –