目前我的文件看起来像这样:
----------- cat1 -------------
Nom_cat=cat1
desc_cat=test description cat
----------- detail_cat ---------------
det_nom=test nom
det_desc=schema precis
det_titre=le schema de l'appli
------------- sous_cat_prd -------------
prd_nom=testprd,prd_descr=descrprd,prd_type=typeprd
prd_nom=ordi,prd_descr=perform,prd_type=ibm
prd_nom=apareil,prd_descr=description de l'apareil,prd_type=photo
-------------- sous_cat_schema -------------
scs_nom=schemaprd:scs_descr=descr schem:scs_adr=77 rue
scs_nom=schema2:scs_descr=description du schema2:scs_adr=40 bldv
----------- cat2 -------------
Nom_cat=cat2
desc_cat=test2 description cat
----------- detail_cat ---------------
det_nom=testnom2
det_desc=schema precis test2
det_titre=le schema de l'appli2
------------- sous_cat_prd -------------
prd_nom=testprd2,prd_descr=descr prd,prd_type=type produit
prd_nom=machine,prd_descr=performant,prd_type=nespress
我想要做的是用PHP将其转换为多维数组,所以它看起来像这样:
array(Nom_cat=>cat1, desc_cat=>test description cat, array(det_nom=>test nom, det_desc=>schema precis,det_titre=>le schema de l'appli),
array(array(prd_nom=>testprd,prd_descr=>descrprd,prd_type=>typeprd)
, array(prd_nom=>ordi,prd_descr=>perform,prd_type=>ibm)
, array(prd_nom=>apareil,prd_descr=>description de l'apareil,prd_type=>photo))
)
array(Nom_cat=>cat2, desc_cat=>test2 description cat, array(det_nom=>testnom2, det_desc=>schema precis test2, det_titre=>le schema de l'appli2),
array(array(prd_nom=>testprd2,prd_descr=>descr prd,prd_type=>type produit)
, array(prd_nom=>machine,prd_descr=>performant,prd_type=>nespress))
)
it shows me this result:
Array ( [0] => Array ( [Nom_cat] => cat1 )
[1] => Array ( [desc_cat] => test description cat )
[2] => Array ( [det_nom] => test nom )
[3] => Array ( [det_desc] => schema precis )
[4] => Array ( [det_titre] => le schema de l'appli )
[5] => Array ( [prd_nom] => testprd,prd_descr )
[6] => Array ( [prd_nom] => ordi,prd_descr )
[7] => Array ( [prd_nom] => apareil,prd_descr )
[8] => Array ( [scs_nom] => schemaprd:scs_descr )
[9] => Array ( [scs_nom] => schema2:scs_descr )
[10] => Array ( [Nom_cat] => cat2 )
[11] => Array ( [desc_cat] => test2 description cat )
[12] => Array ( [det_nom] => testnom2 )
[13] => Array ( [det_desc] => schema precis test2 )
[14] => Array ( [det_titre] => le schema de l'appli2 )
[15] => Array ( [prd_nom] => testprd2,prd_descr )
[16] => Array ( [prd_nom] => machine,prd_descr )
[17] => Array ( [scs_nom] => scc:scs_descr )
[18] => Array ( [scs_nom] => vers:scs_descr )
)
我想要的是得到这个结果:
array (
[0] => array (
[Nom_cat] => 'cat1'
[desc_cat] => 'test description cat'
[0] => array (
[det_nom]=> 'test nom'
[det_desc]=> 'schema precis'
[det_titre]=> 'le schema de l appli'
)
[0] => array (
[prd_nom] => 'testprd'
[prd_descr] => 'descrprd'
[prd_type] => 'typeprd'
)
[1] => array (
[prd_nom] => 'ordi'
[prd_descr] => 'perform'
[prd_type] => 'ibm'
)
[2] => array (
[prd_nom] => 'apareil'
[prd_descr] => 'description de l apareil'
[prd_type] => 'photo'
)
..................
)
[1] => array (
[Nom_cat] => 'cat2'
[desc_cat] => 'test description cat'
..............
)
答案 0 :(得分:1)
最简单的方法是忽略以破折号开头的所有行,并读取数组中的所有其他行。
这是一种可以实现的方法:
$categories = array();
$fh = fopen("file.txt", "r");
while (($buffer = fgets($fh)) !== false) {
if (substr($buffer, 0, 1) == "-") // ignore lines starting with "-"
continue;
$lineData = explode("=", $buffer);
$categories[$lineData[0]] = $lineData[1];
}
fclose($fh);