1

読み取る必要がある 2 つの.txtファイルがあります。2つのファイルの内容は次のとおりです

log.txt

2013/04/20 01:08:11

data.txt

MANUFACTURER: SISYSTEM
MODELNAME: DX1
BIRTHDATE: 19710108
SEX: M

log.txt の場合、最初の行の日付を保存し、それを mySQL データベースに保存する必要があります。

data.txt の場合、各行の情報を変数に保存する必要があります。すなわち:

$manufacturer = SISYSTEM;
$modelname = DX1;
$birthdate =  19710108;
$sex = M;

log.txt の場合、fget を使用して最初の行を読み取り、1 つの変数に格納するだけです。ただし、data.text については、ループ内に複数の変数を格納する方法がわかりません。これが私がこれまでに持っているものですが、whileループを通過するたびに値を新しい変数に割り当てる方法がわかりません。どんな助けでも大歓迎です!

<?PHP

$file_handle = fopen("data.txt", "r");

while (!feof($file_handle) ) {

   $line_of_text = fgets($file_handle);
   $parts = explode(':', trim($line_of_text) );


}

fclose($file_handle);

?>
4

4 に答える 4

7

なぜ変数でそれらが必要なのですか? 連想配列(「マップ」)はよりクリーンなアプローチです

$result = array();
  // Your loop -->
  $parts = array_map('trim', explode(':', $line_of_text, 2)));
  $result[$parts[0]] = $parts[1];
于 2013-04-23T20:12:31.153 に答える
3

可変変数を使用する: http://php.net/manual/en/language.variables.variable.php

while ループで使用します。

$line_of_text = fgets($file_handle);
$parts = explode(':', trim($line_of_text), 2);
${strtolower($parts[0])} = trim($parts[1]);
于 2013-04-23T20:09:59.427 に答える
3

注: 新しい変数に値を割り当てる方法がわかりません

配列を使用できます。

各ファイルの内容の例を提供したと思います-これらのパターンが繰り返される可能性があります。あなたの質問に答える前に、データをテキスト ファイルに保持することは非常に悪い考えであり、多くの理由があることを知っておくことが重要だと思います。

2 番目のファイルを例にとると、PHP でこのデータを管理する方法には 2 つの選択肢があります。データをテーブルと見なしてください。

manufctr  model   birthdate   sex
SISYSTEM  DX1     19710108    M
SISYSTEM  DX2     19710305    F
...

各行を配列に格納するか、各列を配列に格納することができます。結果として得られる配列のセットは、それ自体を配列に格納できます。

データをロードして解析する方法は、データ構造がどの程度一貫しているかによって異なります (各エントリは常にこの形式であるか、余分な属性または欠落している属性があるか)。データを行または列のどちらに読み込むかは、データがファイルにどのように格納されているか、およびデータを次に何をしようとしているかによって異なります。

$read=array();
while (true) {
   $record=array();
   for($x=0; $x<4; $x++) {
      $line_of_text = fgets($file_handle);
      list($k, $v) = explode(':', $line_of_text );
      $record[strtolower(trim($k))]=trim($v);
   }
   $read[]=$record;
   if (feof($file_handle) break;
}
于 2013-04-23T20:40:46.353 に答える