私はPHPを学ぼうとしているので、CSVファイルを読み取って複数の配列を含む配列に配置するPHPスクリプトを開発しています。
CSVはこの構造で構成されています
USER,PRINTER,PAGES,COPIES,GRAYSCALE,DUPLEX
001,001,1,2,G,D
001,002,1,3,C,ND
002,003,2,2,C,D
これまでのところ、「users」サブ配列を含むメイン配列を出力する PHP スクリプトを作成することができました。
このようなもの
Array
(
['user1']=>Array
(
['printer1']=>Array
(
[PAGES]=>'1'
)
)
)
これは複数のユーザー向けですが、ユーザー配列内のプリンターを増やすことはできないようです。これは私のコードです:
<?php
$arrprint = array();
$arrprinter = array();
if (($handle = fopen("log-2013-04-03.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if (! isset($arrprint ["".$data[1].""]) ){
$arrprint ["'".$data[1]."'"] = $data[1];
if(! isset($arrprinter["".$data[4].""]) )
$arrprinter["'".$data[4]."'"] = ['Pages' => $data[2]];
}
/*$arrprint ["'".$data[1]."'"] = [ "'".$data[4]."'" => ['NºPag' => $data[2]]];*/
$arrprint["'".$data[1]."'"] = $arrprinter;
}
print_r ($arrprint);
fclose($handle);
}
私は何を間違っていますか?私のコードに抜けているループはありますか?
編集: 要求どおり 望ましい出力は次のようになります。
array(
['user1']=>array(
['printer1']=>Array( 'bw_cp'=10 'colour'=20)
['printer2']=>Array( 'bw_cp'=5 'colour_cp'=1 )
)
)
これが最終的なアイデアになります!