PHP ganzes array aus funktion zurückgeben

Atreju93

Lieutenant
Registriert
Nov. 2010
Beiträge
595
Hallo zusammen

Ich bin etwas neu in PHP und habe folgendes Problem:

Ich habe eine Funktion geschrieben (frageneinlesen();) - welche schlussendlich ein gefülltes Array ($fragestring) als Resultat hat. Leider brauche ich das ganze Array ausserhalb der funktion - doch wie kriege ich die dort heraus?

Ich habe schon versucht mit "return ($fragestring); - jedoch ohne erfolg. könnt ihr mir helfen?

Code von der funktion:

Code:
function frageneinlesen ($kategorien) {
for($u =0; $u < count($kategorien); $u++) {
	$fragedatei = fopen ("fragen/daten/$kategorien[$u].txt","r");
	$i = 1;
	$iu = 0;
	echo "Inhalt vonee kategorien$u: $kategorien[$u]<br>";
	$fragestring = array();
	
	while (!feof($fragedatei)) {
		$frage = fgets($fragedatei,500);
		$fragestring[$iu] = "<tr>
								<td> <?php
									ECHO \"$frage\";?><br>
									<input type=\"radio\" name=\"Frage$i\" value=\"Gar nicht\"> Gar nicht<br>
									<input type=\"radio\" name=\"Frage$i\" value=\"Weniger\"> Weniger<br>
									<input type=\"radio\" name=\"Frage$i\" value=\"Eher mehr\"> Eher mehr<br>
									<input type=\"radio\" name=\"Frage$i\" value=\"Voll zutreffend\"> Voll zutreffend
								</td>
							</tr>";
							$fragestring[$iu] = "?>".$fragestring[$iu];
		$i++;
		$iu++;
		}
		return ($fragestring);
		//eval($fragestring[1]);
		
}
}

Und so müsste ich auf das Array zurückgreifen:
Code:
$kategoriedatei = fopen ("fragen/daten/kategorie.txt","r");
$kategoriestring = "";
$fragestring = array();
$ie = 0;
	while (!feof($kategoriedatei)) {
		$zeile = fgets($kategoriedatei,500);
		$kategorien = explode("|", $zeile);
	}
		$fragestring = frageneinlesen($kategorien);
		echo $fragestring[0];
		for($i =0; $i < count($kategorien); $i++) {
				$kategoriestring .= "<tr>
										<td> <?php
											ECHO \"$kategorien[$i]\";?><br>
											<?php
											ECHO \"$fragestring[$i]\";?><br>
										</td>
									</tr>";
		$ie++;
		
		echo "kategorien$i: $kategorien[$i]<br>";
		}

auf jeden Fall müsste ich das Array $fragestring wenn die funktion beendet ist irgendwie zur Verfügung haben...
 
mach mal

return $fragestring;

ohne die Klammern.
 
habe ich vorher schon versucht - geht auch nicht. Oder mache ich beim abruf des Arrays einen fehler?

Meine Logik sagt, dass ich ausserhalb der funktion mit $fragestring = frageneinlesen($kategorien); das Array aus der funktion kopieren kann
 
Hast du mal ein var_dump($fragestring) inner- und außerhalb der Funktion durchgeführt. Dann siehst du gleich den Typ und was vielleicht dein Fehler ist.
Dir ist klar, dass echo "$kat[$i]" nicht so funktioniert, wie du das wahrscheinlich willst? Mach mal einfach echo "Kategorien".$kategorien[$i];
 
und bei
PHP:
echo $fragestring[0];

kommt nichts raus?

Und wozu eigentlich:
PHP:
<?php									ECHO \"$frage\";?>
wenn mans nachher nicht separat evaluieren muss, wärs einfach:
PHP:
".$frage."

Gruß,
Andreas
 
Wie gesagt, ich bin PHP anfänger und rege mich nur tierisch auf, da ich seit mehr als 20 Stunden (am stück) versuche eine einfache Umfrage in PHP zu programmieren... mir wurde gesagt - "programmiere eine Umfrage in PHP mit den und den Anforderungen" - PHP Einweisung habe ich nie gehabt. (Habe etwas erfahrung in C#). Morgen muss es fertig sein


BT:

Ich muss in $kategoriestring das Array $fragestring packen.

Code:

Code:
				$kategoriestring .= "<tr>
										<td> <?php
											ECHO \"$kategorien[$i]\";?><br>
											<?php
											ECHO \"$fragestring[$i]\";?><br>
										</td>
									</tr>";

Das wird in einer Schlaufe durcheführt, und $i wird hochgezählt - somit ändert sich der Inhalt von $fragestring immer, da ich für das Array immer einen anderen Index mitgebe. Das Ganze wird an $kategoriestring angehängt. Schlussendlich erhalte ich eine Tabelle, mit den Daten aus $Fragestring.

Ich habe vorher versucht in $kategoriestring eine Variable zu packen (ECHO \$fragestring[$i]\";) um diese dann später auszufüllen. Da PHP aber meint, dass es zu dem Zeitpunkt, wo ich $kategoriestring erstelle schon den Inhalt von $fragestring haben muss, geht das so nicht.. ich muss daher zuerst wissen, was in $fragestring steht - daher muss ich vor dem Generieren von $kategoriestring die funktion (frageneinlesen) aufrufen, damit es mir $fragenstring erstellt. Nur nützt mir das nichts, wenn ich ausserhalb der Funktion nicht auf das ganze verd... Array zugreiffen kann (sorry es wird spät..)

Ich hoffe ihr versteht, was ich zu erreichen versuche...
 
In deinem anderen Thread hast du kategorie.txt aber anders ausgelesen. Jetzt berücksichtigst du nur die letzte Zeile in der Datei, was dein Problem verursachen könnte.

Ansonsten lass den Blödsinn mit
Code:
$kategoriestring .= "<tr><td><?php ECHO \"$kategorien[$i]\";?><br>
Das hier tut's auch:
Code:
$kategoriestring .= "<tr><td>\"$kategorien[$i]\"<br>
Wenn nicht, nimm die Stringkonkatenation ".".

Valies HTML ist das auch nicht: $fragestring soll offensichtlich eine Tabelle enthalten, die du in eine Tabellenzelle einer anderen Tabelle einfügen willst. Dazu musst du aber noch "<table>...</table>" um $fragestring setzen.
 
Code:
function frageneinlesen ($kategorien) {
    for($u =0; $u < count($kategorien); $u++) {
        while (!feof($fragedatei)) {
        }
        return ($fragestring);
    }
}

Bist du sicher, dass das das macht, was du willst? IN der FOR-Schleife ein Return? Damit kommst du ja nie über i=0 raus ...

Schlauer wäre das:
Code:
function frageneinlesen ($kategorien) {
    for($u =0; $u < count($kategorien); $u++) {
        while (!feof($fragedatei)) {
        }
    }
    return ($fragestring);
}
 
Zurück
Oben