2016-09-13 2 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 배열로 복사하십시오.

$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