このファイルの形式を次のように再定義できる場合。
[Core]
System=Avro
Supplier=ABC Inc
[line1]
Quantity= 1
Device=ICD
ID=PA-658_ao8uY
For Clarity=PA-658_AO8UY
[line2]
Quantity=10
Device=PSTHG
ID=tg675_0O09i8
For Clarity: TG675_0O09I8
を使用parse_ini_file(file,true,INI_SCANNER_NORMAL)
すると、すべてのデータの多次元配列を取得できます。
これは、使用できる代替の非常に主観的なソリューションの1つです。フォーマットは安定していると思いますが、長く続くでしょう。
<?php
$newStock = new NewStockUpdate($itemListFile);
//do anything with $newStock Object
class NewStockUpdate
{
private $System;
private $Supplier;
private $allUpdates;
function __construct($listFile)
{
$fileHandle = fopen( $listFile, "r" ) or die("Couldn't open Update file $listFile");
$lineSystem = explode(":",getLineData($fileHandle));
$lineSupplier = explode(":",getLineData($fileHandle));
$i=0;
while(true)
{
$allUpdates[$i] = new ItemData($fileHandle);
$i++;
}
}
function getSystem()
{
return $this->System;
}
function getSupplier()
{
return $this->Supplier;
}
function getUpdateList()
{
return $this->allUpdates;
}
}
class ItemData
{
public $Quantity;
public $Device;
public $ID;
public $ForClarity;
public $lastObject;
function __construct($filePointer)
{
try
{
$lineQuantity = explode(":",getLineData($filePointer));
$lineDevice = explode(":",getLineData($filePointer));
$lineID = explode(":",getLineData($filePointer));
$lineForClarity = explode(":",getLineData($filePointer));
$this->Quantity = $lineQuantity[1];
$this->Device = $lineDevice[1];
$this->ID = $lineID[1];
$this->ForClarity = $lineForClarity[1];
}
catch(Exception $e)
{
//log something
}
if(feof($filePointer))
{
$this->lastObject = true;
}
else
{
$this->lastObject=false;
}
function isLastRecord()
{
return $this->lastObject;
}
}
}
function getLineData($filePointer)
{
while(!feof($filePointer))
{
$data = fgets($filePointer);
if(empty($data)|| $data=='\n')
{
$data = fgets($filePointer);
}
else
{
return $data;
}
}
}
?>
残りはクラスオブジェクトで管理できると思います。これらのエントリをdbおよびallに追加します。さまざまなサプライヤに対して複数のNewStockオブジェクトを作成できます。これがお役に立てば幸いです