Erklärung zum script bitte

hoctar

Erfahrenes Mitglied
Hallo :)
Ich schaue mir gerade ein os script an, die folgenden zeilen sind ein ausschnitt zu einem kleinen kartensystems. Leider verstehe ich manches nicht, könnte mir bitte jemand erklären was da passiert?
Was bedeutet $info = $xy[$xyz]; oder $coord[$i] = $xy[$i]["name"]; ? Was sollen denn das ergeben ? -> $xy[$i]["name"] ?
Und was sollen diese zeichen '%s:3:\"typ\";s:4:\"".$info[typ]."\"% ? Was wird da aus der DB gelesen ?

PHP:
case "ansicht":
	$xy = $dorf[xy];

	$xyz = $_GET[xyz];
	if ($xyz == "") $xyz = "5";
	$info = $xy[$xyz];
	$actions = "";

	if ($sub == "bauen") {
		$actions .= "<div class='cat'>Bauen</div>";
		$sql = mysql_query("SELECT * FROM bauten WHERE `requires` like '%s:3:\"typ\";s:4:\"".$info[typ]."\"%'");
		while($row = mysql_fetch_array($sql)) {
			$row[costs] = unserialize($row[costs]);
			$actions .= "<div><b>".$row[name]."</b><br>".$row[desc]."<br><br><br>Kostet ".$row[costs][Gold]." Gold, ".$row[costs][Holz]." Holz und ".$row[costs][Stein]." Stein</div>";
		}
	} elseif ($info[name] == "Leer") {
		$actions .= "<a href=\"index.php?action=ansicht&xyz=$xyz&sub=bauen\">Bauen</a>";
	}	

	$i = 1;
	while ($i <= 9) {
		$coord[$i] = $xy[$i]["name"]; 
		$i++;
	}
 
Mir scheint als waere fuer Dich erstmal wichtig die Grundlagen von PHP zu erlernen, denn dies hier sind nichts weiter als Zugriffe auf Arrays, wobei dann auch noch so miese Schreibweisen wie $info[name] auftauchen. Hier ist "name" eigentlich eine Konstante, wird aber wahrscheinlich von PHP als String verarbeitet da die Konstante nicht definiert ist.
Richtig waere hier wohl eher $info['name'] oder meinetwegen auch $info["name"].

Also, zu Deinen konkreten Fragen:
PHP:
$info = $xy[$xyz];
Hier wird ein Element im Array $xy in die Variable $info geschrieben. Der Schluessel des Elements wird aus der Variable $xyz geholt, welche wiederum entweder per URL uebergeben wird oder, wenn eben nicht, dann mit 5 vorbelegt wird.
PHP:
$xyz = $_GET[xyz];
    if ($xyz == "") $xyz = "5";
Auch dieser Code ist nicht gerade erste Sahne. Ich wuerde das doch eher so ausdruecken:
PHP:
if ((!empty($_GET['xyz'])) && (is_numeric($_GET['xyz'])))
{
 $xyz=$_GET['xyz'];
}
else
{
 $xyz=5;
}
Hierbei wird gleich geprueft ob xyz per URL uebergeben wurde und ob es sich um eine Zahl handelt. Noch besser waere eine Ueberpruefung auf eine Ganzzahl, aber ich will das Beispiel ja nicht unnoetig aufblasen. ;)

Aehnlich sieht es bei folgendem Beispiel aus:
PHP:
$coord[$i] = $xy[$i]["name"];
Hier wird jedoch mit einem zweidimensionalen Array ($xy) gearbeitet.
 
Der Schluessel des Elements wird aus der Variable $xyz geholt
heist das, es wird aus der array $xy was bestimmtes rausgeholt, was $xyz definiert ?

und ehmm noch die frage mit den komischen zeichen
PHP:
Und was sollen diese zeichen '%s:3:\"typ\";s:4:\"".$info[typ]."\"% ? Was wird da aus der DB gelesen ?
die verstehe ich leider nicht. was wird da gelesen ?
 
Zurück