Alle variablen holen und false variablen ausschließen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
array
ausgangsbasis
bauen
blocken
code
dienen
eigenem namen
entsprechen
ersten durchlauf
hausnummer
idee
nachname
rest
string
text
umdenken
url
variablen code
zugreifen
-
Hallo,
Ich habe viele Variablen und möchte nun prüfen, ob diese True sind und die false variablen ausschließen. Damit ich nicht 16^16 = 1,84467441 × 1019 IF Anweisungen Tippen muss, möchte ich also nur die false ausschließen und dementsprechend einen String generieren... Wie macht man das?
Z.B: Kann Variable1 und 7 True sein, die anderen sollen dann ausgeschlossen werden.. Oder
Variable 13 und 4 sind True.. Etc.. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
wenn das variablen mit eigenem namen sind, hätte ich folgende (umständliche) Lösung für dich:
try { if(var1*var2*var3*var4) { //mach was, wenn ein false bei ist } catch (NullPointerException e_np) { //das hier ist völlig normal, dass er hier rein geht... hier können wir den nächsten block prüfen als try catch }
bei 20 vars mag es noch gehen, bei mehr wirds tricky...
einfacher ist es als array
foreach ($array_x as $entry) { if($entry) { //hier variable killen, den rest packst du shcon zusammen zu scripten } }
bei der anzahl variablen denk ich mal sollte das array als ausgangsbasis dienen... ansonsten mal umdenken... oder einen webserver suchen, auf dem eval() zugelassen ist. but -> eval is evil! -
sebulon schrieb:
wenn das variablen mit eigenem namen sind, hätte ich folgende (umständliche) Lösung für dich:
bei 20 vars mag es noch gehen, bei mehr wirds tricky...
einfacher ist es als array
foreach ($array_x as $entry) { if($entry) { //hier variable killen, den rest packst du shcon zusammen zu scripten } }
bei der anzahl variablen denk ich mal sollte das array als ausgangsbasis dienen... ansonsten mal umdenken... oder einen webserver suchen, auf dem eval() zugelassen ist. but -> eval is evil!
Erklär mir das mal genauer bitte, ich hab's nicht verstanden..
Ich hab beispielsweise meine Variablen:
$id = false; $nachname = false; $vorname = false; $strasse = false; $hausnummer = false; $postleitzahl = false; $ort = false; $strasse = false; $hausnummer = false; $mobiltelefon = false; $faxno = false; $festnetz = false; $mail = false; $geburtstag = false; $datum = false; $hash = false;
Die muss ich jetzt in ein array legen?
$array_x = array(Meine Variablen)
Und dann durchlaufen lassen?
foreach ($array_x as $entry) { if($entry) { echo "Der String mit den varbiablen'.$entry //??? } }
Der String soll ja jeh nach Variable angepasst werden... -
hackyourlife schrieb:
Verstehe ich dich falsch, oder willst du sowas bauen:$string = ''; if($id) $string .= "Id: $wert1\n"; if($nachname) $string .= "Nachname: $wert2\n"; … echo(nl2br(trim($string)));
Jein.. Ich hab inzwischen ein bisschen was umgeschrieben... Zu jeder Variable, die True ist, wird individuell ein Text erstellt... Jetzt muss ich nur noch schauen, dass ich den in ein array bekomme :o
Ich würd's dir gern zeigen, allerdings sind das sehr sehr viele Code Zeilen ^^ -> Interesse?
Beitrag zuletzt geändert: 7.11.2012 16:46:40 von kill-a-teddy -
Du kannst die Texte in einem assoziativem Array aufbewahren:
$texte = array(); $texte[ 'id' ] = "hallo duda"; $texte[ 'name' ] = "Dein Name ist aber toll!"; foreach ( $texte as $k => $v ) { try { if ( $$k ) $string .= $v; } catch( $e ) { // do nothing } }
Damit nutzt du die PHP Fähigkeit der Variabeln Variablennamen. $$k würde im ersten durchlauf hier $id entsprechen, so kann man auch darauf zugreifen, wenn du magst. Ist nicht die schönste Idee, aber für das schöne ist Hackyourlife da, ich bin fürs unkonventionelle da^^
Liebe Grüße -
ggamee schrieb:
Damit nutzt du die PHP Fähigkeit der Variabeln Variablennamen. $$k würde im ersten durchlauf hier $id entsprechen, so kann man auch darauf zugreifen, wenn du magst. Ist nicht die schönste Idee, aber für das schöne ist Hackyourlife da, ich bin fürs unkonventionelle da^^
Liebe Grüße
Okay, das scheint eine geeignete Lösung zu sein.. Allerdings hab ich grad Probleme damit das letzte Zeichen des Strings zu löschen...
$arriba = array($new_array[$x]); $wrr = implode($arriba); $substr=substr($wrr,0,strlen($wrr)-1); echo $substr;
Der löscht alle Kommas, sollte aber nur das letzte löschen :/ :( Was da los?
//Offenbar löscht er immer das, was im Array drin ist?
Beitrag zuletzt geändert: 7.11.2012 18:56:52 von kill-a-teddy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage