0

という名前のテキスト ファイルがありますSe7enPlug.dspl。このファイルには、次のようにフォーマットされた 1 行のテキストしかありません。

text1,text2,text3

このファイルを読み取って、次のようなものを返す必要があります。

public function rconGetNextMap() {

    $myFile = "E:\mw3-server\admin\Se7enPlug.dspl";
    $fh = fopen($myFile, 'r');
    $theData = fread($text1,$text2,$text3);
    fclose($fh);
    echo $theData;

    if ($theData) {

        $next = array("map" => $text1, "gametype" => $text2, 0=>$text1, 1=>$text2);
    }
    elseif (!$theData)) {

        $next = array("map" => "Unknown", "gametype" => "Unknown", 0=>"Unknown",1=>"Unknown");
    }
    return $next;
}

ご覧のとおり、多くの問題があります。どうすれば修正できますか?

4

2 に答える 2

3

これにより、テキスト ファイルが読み込まれ、最初と 2 番目の値が配列に保存されます。

<?php

    $myFile = "E:\mw3-server\admin\Se7enPlug.dspl";
    $fh = fopen($myFile, 'r');
    $theData = fgetcsv($fh,$delimiter = ',');

    if ($theData) {

        $next = array("map" => $theData[0], "gametype" => $theData[1]);
    }

?>
于 2012-11-18T21:17:12.320 に答える
1

fgetcsv()Dagonが述べたように、より良い使用:

public function rconGetNextMap() {
  $myFile = '...';
  $handle = fopen($myFile, 'r');
  $retArray = array(
    'map' => 'Unknown',
    'gametype' => 'Unkown',
  );

  if (!$handle) {
    return $retArray;
  }

  $data = fgetcsv($handle, 1000, ',', '"');

  if ($data !== false) {
    $retArray['map'] = $data[0];
    $retArray['gametype'] = $data[1];
  }
  fclose($handle);
  return $retArray;
}

出力配列から 2 つの数値インデックスを削除しました。それらは冗長なデータを表すため、お勧めしません。しかし、それらは簡単に追加できます。

于 2012-11-18T21:15:40.477 に答える