2016-09-13 6 views
0

を与えているこれが私のファイルspectrum_info.txtの内容は次のとおりです。array_diff()は、予期しない情報

raid,spectrum/raid_info.txt 
rbid,spectrum/rbid_info.txt 
rcid,spectrum/rcid_info.txt 
rdid,spectrum/rdid_info.txt 
reid,spectrum/reid_info.txt 

私はからfile_names情報を入れ

$s_types=file('spectrum/spectrum_info.txt'); 
$i=0; 
foreach($s_types as $s_type) 
{ 
    $s_arrfields = explode(',', $s_type); 
    $s_names[] = $s_arrfields[0]; 
    $sf_names[] = $s_arrfields[1]; 
} 

コードの下に使用して、このファイルのデータをロードする場合上記のファイルを$sf_names配列に置き換えます。 手動Iは、同じデータを有する一つの他の配列を作成した:

$f_temp=array("spectrum/raid_info.txt", 
              "spectrum/rbid_info.txt", 
              "spectrum/rcid_info.txt", 
              "spectrum/rdid_info.txt", 
              "spectrum/reid_info.txt", 
              "spectrum/rfid_info.txt", 
              "spectrum/rgid_info.txt", 
              "spectrum/rhid_info.txt"); 
          print_r($f_temp); 
          echo"<br/>"; 
          print_r($sf_names); 
          echo"<br/>"; 
          $result=array_diff($f_temp,$sf_names); 
          print_r($result); 

両方の配列が同じデータを持っています。まだarray_diff()は、すべての配列要素が異なるものとして示しています。

私は$sf_namesファイル情報を使用してその特定のファイルからデータを読み取ると、以下のエラーが発生するため、これを試しています。

警告:ファイル(スペクトル/ raid_info.txt):ストリームをオープンに失敗しました:無効な引数

は、手動で配列を作成したに等しいファイルからロードされたデータを変更する方法としてarray_diff()に関する私を助けてください。これは、上記のエラーを解決するのに役立ちます。ありがとう。

+0

参照最初 – nogad

+0

RTFM:[ファイル()](http://php.net/manual/en/function.file.php ) '戻り値:...配列の各要素は、ファイル内の行に対応し、改行はまだ残っています。' array_diffは完全に動作していますが、 '' foo "==" foo \ n "' –

+0

@MarcBファイルを開くことさえできないように見えます。 – Mike

答えて

0

デフォルトでfile()によって返される値には、各行の最後に改行文字が含まれます。 FILE_IGNORE_NEW_LINESフラグを使用して、各値から改行を削除することができます。詳細については

$s_types = file('spectrum/spectrum_info.txt', FILE_IGNORE_NEW_LINES); 

、()あなたがファイルを修正する必要が http://php.net/manual/en/function.file.php

関連する問題