2016-08-06 3 views
-2

입력 파일을 아래 양식으로 조작 할 수있는 일련의 객체로 변환하려고합니다.초기화 후 PHP 클래스 값에 액세스 할 수 없습니다.

arabian_sea_area = { 
    1926 1927 1931 1932 1933 2029 2030 
} 

gulf_of_aden_sea_area = { 
    1925 2024 5285 5286 
} 

자위대

<?php 

$all_areas = array(); 
if (($handle = fopen("area.txt", "r")) == False) 
{ 
    die("failed to open file\n"); 
} 

while (($line = fgets($handle)) !== FALSE) 
{ 
    if (ctype_alpha($line[0])) 
    { 
     $line= explode(" ",$line); 
     // echo($line[0]."\n"); 

     $area = $line[0]; 
     $IDs = explode(" ", fgets($handle)); 
     $IDs[0] = ltrim($IDs[0], ' '); // trying to remove tab from first ID 
     $all_areas[$area] = $IDs; 
     //array_push($all_areas, $temp); 
    } 
} 
//echo("a\n"); 
print_r($all_areas["arabian_sea_area"]); 
//var_dump ($all_areas); 

?> 

주석 처리 디버그 라인에서 제대로 값 인쇄하지만 끝에 위해서 var_dump 아무것도 인쇄하지 못한다.

편집 : 내가 알고 자하는 것이 명확하지 않다는 것을 깨달았습니다. 첫 번째 줄 (예 : arabian_sea_area 등)이라는 제목의 객체에 연결된 마스터 "all_areas"배열을 만들고 숫자 ID를 얻을 수있었습니다. 각 영역에 대해 나중에 스크립트 용으로 알고리즘 적으로 당신은 $ 임시 변수를 만드는

1

if (ctype_alpha($line[0])) 
{ 
    $line= explode(" ",$line); 
    //echo($line[0]."\n"); 

    $temp = $line[0]; 
    $temp = new Area; 
    $temp->filler($line, $handle); 
} 

하지만 당신은 당신의 주요 배열 $ all_areas에 밀어 깜빡 :

+0

자세한 내용을 추가하여 필요한 것을 정확하게 강조하십시오. 현재 작성된 내용이므로 귀하가 원하는 내용을 정확하게 말하기는 어렵습니다. 이 질문을 명확히하기위한 [How to Ask] (http://stackoverflow.com/help/how-to-ask) 페이지를 참조하십시오. – Script47

답변

2

은 당신의 코드로 많은 문제가 있습니다. 존재하지 않는 array_push

2

var_dump ($arabian_sea_area); 

$의 arabian_sea_area를 사용합니다. 메인 어레이 $ all_areas를 출력하셨습니까?

-3- 추천 :

에러에

(에코 ("파일 \ 없음을 열 실패"))의 다이를 사용하는 것이 ("파일 \ 없음을 열 실패"); 대신 에코. die는 나머지 스크립트가 실행되는 것을 멈 춥니 다.

- UPDATE -

내가 잘 작동합니다 방식으로 코드를 편집는 :

class Area { 
    public $area_name; 
    public $IDs = array(); 

    public function filler($line, $handle) { 
     $this->area_name = $line[0]; 
     //echo($this->area_name."\n"); 

     $this->IDs = explode(" ", fgets($handle)); 
     //print_r($this->IDs); 
    } 
} 
$all_areas = array(); 
if (($handle = fopen("area.txt", "r")) == False) 
{ 
    die("failed to open file\n"); 
} 

while (($line = fgets($handle)) !== FALSE) 
{ 
    if (ctype_alpha($line[0])) 
    { 
     $line= explode(" ",$line); 
     // echo($line[0]."\n"); 

     $temp = $line[0]; 
     $temp = new Area; 
     $temp->filler($line, $handle); 

     array_push($all_areas, $temp); 
    } 
} 
//echo("a\n"); 
var_dump ($all_areas); 

당신은 싶어은/필터 빈 값을 제거하는 업데이트 할 수 있습니다.

+0

대단히 고마워요! $ all_arrays를 area_name과 ID를 포함하는 연관 배열로 만드는 방법이 있습니까? – CenturionSC2

+0

무슨 뜻인지 잘 모르겠다. $ all_arrays는 이제 Area 객체의 배열이어야합니다. 무엇을 찾고 계십니까? – TestCandidate

+0

나는 수업을 전혀 필요로하지 않았다. 아이디어는 아라비안 바다와 같은 지역 이름을 입력하고 해당 지역에 해당하는 ID 배열을 출력 할 수있게하는 것이 었습니다. 현재 의도 한대로 작동하고 있습니다. 탭 또는 빈 ID 색인을 아주 잘 제거 할 수 없습니다. 특히 프로그래밍에 익숙하지 않다는 것을 확실히 말할 수 있듯이 도움을 주셔서 대단히 감사합니다! – CenturionSC2

관련 문제