2016-08-06 11 views
-2

Ich versuche, eine Eingabedatei in das Formular unten in eine Reihe von Objekten, die manipuliert werden können, zu drehen.PHP Klassenwert nicht nach der Initialisierung zugänglich

arabian_sea_area = { 
    1926 1927 1931 1932 1933 2029 2030 
} 

gulf_of_aden_sea_area = { 
    1925 2024 5285 5286 
} 

sdf

<?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); 

?> 

Die Werte richtig gedruckt in den Debug-Zeilen kommentiert, aber nicht etwas für die var_dump am Ende zu drucken.

edit: Ich weiß, das war unklar, was ich zu tun versuchte, war ein Master "all_areas" Array, die mit Objekten mit der Überschrift der ersten Zeile (dh arabian_sea_area usw.) verknüpft und ich konnte dann auf die numerischen Ids bekommen für jeden Bereich algorithmisch für ein späteres Skript.

+0

Bitte fügen Sie zusätzliche Details hinzu, um genau zu markieren, was Sie brauchen. Wie es derzeit geschrieben wird, ist es schwer zu sagen, was genau Sie fragen. Informationen zur Klärung dieser Frage finden Sie auf der Seite [Wie Sie fragen] (http://stackoverflow.com/help/how-to-ask). – Script47

Antwort

2

Es gibt viele Probleme mit dem Code:

1-

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

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

Sie ein $ temp variable Erstellung, aber sie vergessen, es zu Ihrem Haupt-Array $ all_areas zu schieben. verwenden array_push

2-

var_dump ($arabian_sea_area); 

$ arabian_sea_area existiert nicht. Wollten Sie Ihr Haupt-Array $ all_areas drucken?

3- Empfehlung:

auf Fehler (echo ("failed Datei \ n öffnen");) empfohlenen Matrize zu verwenden ("failed Datei \ n öffnen"); anstelle von echo. Da der Würfel den Rest des Skripts davon abhält, ausgeführt zu werden.

- UPDATE -

ich Ihren Code in einer Weise bearbeitet, die gut funktionieren sollte:

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); 

Sie könnten wollen aktualisieren, es zu entfernen/Filter leere Werte.

+0

Vielen Dank! Gibt es eine Möglichkeit, $ all_arrays zu einem assoziativen Array zu machen, das Bereichsname und IDs enthält? – CenturionSC2

+0

Ich bin mir nicht sicher, ob ich verstehe, was du meinst. $ all_arrays sollte nun ein Array von Area-Objekten sein. Bitte erläutern Sie, wonach Sie suchen. – TestCandidate

+0

Ich brauchte die Klasse überhaupt nicht. Die Idee war, einen Gebietsnamen wie arabian sea eingeben zu können und ein Array von IDs auszugeben, die diesem Bereich entsprechen. Es funktioniert derzeit wie beabsichtigt, nur kann ich nicht scheinen, die Registerkarte oder den nachgestellten leeren IDs-Index sehr gut zu entfernen. Und vielen Dank für Ihre Hilfe, da Sie sicher sagen können, dass ich neu bin im Programmieren und insbesondere PHP! – CenturionSC2

Verwandte Themen