PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrdimensionales Array abfragen in OO


Dadelu
18.10.2011, 14:37:48
Hallo Community

Ich hätte da mal eine Frage. Nach langer Suche habe ich irgendwie noch nicht die richtige Antwort gefunden welche das Problem lösen könnte.

Ich habe folgende Class: sqlGen.inc.php mit folgendem Code:

private $tabellenName;
private $felder = array();
private $typ;
private $laenge;
private $flag_Index = false;
private $index;


public function __construct($tabellenName){
$this->tabellenName = $tabellenName;
}


public function addFeld($feldname,$typ,$laenge,$kommentar){

$arr = $this->felder;
foreach($arr as $test){
echo("im while<br>");
if($test['Name'] == $feldname){
return 'bereits vorhanden';
}
else {
$this->felder[] = array("Name" => $feldname,"Typ" => $typ, "Laenge" => $laenge, "Kommentar" => $kommentar);
}
}
}

Nun mein Problem: Meiner Meinung, oder besser gesagt mein Wunsch wäre jetzt, wenn ich die funktion addFeld 2 mal mit dem gleichen Feldname aufrufe, dass die Meldung kommt 'bereits vorhanden'. Aber irgendwie passiert gar nichts.. Wenn ich echo's einbaue sehe ich, dass er nicht in die foreach anweisung kommt. Wenn ich die Linie für das hinzufügen eines neuen Feldes ganz am Anfang verschiebe, funktioniert die ganze Logik.

Nun meine Frage: Was mache ich genau falsch? Es handelt sich ja um ein private Objekt daher sollte der Arry Felder immer vorhanden sein während eines Aufrufes?

Vielen Dank im Voraus für die Hilfe!

Gruss Dadelu

DokuLeseHemmung
18.10.2011, 22:02:06
public function hasFeldByName($feldname)
{
foreach($this->felder as $subarray)
if( $subarray['Name'] === $feldname) return true;
return false;
}

public function addFeld($feldname,$typ,$laenge,$kommentar)
{
if($this->hasFeldByName($feldname)) echo "schon vorhanden";
else $this->felder[] = array("Name" => $feldname,"Typ" => $typ, "Laenge" => $laenge, "Kommentar" => $kommentar);
}

*ungetestet*

Dadelu
19.10.2011, 13:21:15
Hey vielen Dank so funktioniert es einwandfrei!

Gruss D.