zugriff auf ersten schlüssel im array nur durch variablennamen?

methodus

Erfahrenes Mitglied
jetzt bin ich dran mit fragen:

ist es möglich wenn man ein array hat

$array("string"=>true,"string2"=>"message");

eine ifabfrage zu stellen wie folgt:

if($array){
blabla
}

also nicht mit $array[0] für das 0te glied bzw. $array["string"]

würde mich nämlich mal interessieren.
 
ich denke nicht, denn mit if($array) überprüfst du ja nur das existieren der variable. das kann auch ein leeres array sein.

IMHM gehts also nicht.
 
if-bedingungen können nur mit booleschen werten umgehen, was bedeutet, dass alle anweisungen in der klammer in einen booleschen wert umgewandelt werden.

Code:
if ($array)
kann man genau so gut so schreiben:
Code:
if ($array == true)
// oder andersrum:
if ($array != false)
oder auch so:
Code:
 if ($array != 0)

mit so einer if-bedingung wird also nur geprüft, ob das array wahr ist. ;)


btw: so kann man z.b. auch if-bedingungen weglassen:
Code:
$i = 2;
if ($i == 2) { $j = true; } else { $j = false; }
ist gleichwertig mit dem hier:
Code:
$j = ($i == 2);

aber das nur so am rande.
 
ühm naja so richtig beantwortet das meine frage nicht.

wenn das array gesetzt ist, was es ja am anfang eindeutig wird, ist es ja zwangsläufig war, das es existiert. nun gibt es ja den syntax

$test = true;

if($test){ echo "Test erfolgreich"; }

$test = false;

if(!$test){ echo "Test misslungen"; }

diese Dinge funktionieren.
geht das aber jetzt auch wenn:

$test = array(false,"test misslungen");

if(!$test){ echo $test[1] }

so ist es vielleicht deutlicher
 
PHP:
if(!$test){ echo $test[1] }

du willst das 2. element einer variable ausgeben, aber nur wenn diese variable nicht existiert?

du bist lustig...^^
 
wie frage ich das eigentlich und teste ich es nicht einfach mal:

folgende ergebnisse:

PHP:
<?php

  $test = array(false,"Test misslungen","Test erfolgreich"); 
 
  if(!$test){ echo $test[1];  } 
  else { echo $test[2]; }

?>
Ausgabe: Test erfolgreich


und so:

PHP:
<?php

  $test = array(false,"Test misslungen","Test erfolgreich"); 
 
  if(!$test[0]){ echo $test[1];  } 
  else { echo $test[2]; }

?>
Ausgabe: Test misslungen

Das bedeutet also, PHP prüft nicht den ersten Wert im Array sondern die Existenz des Arrays. Erst durch Angabe des ersten Gliedes funktioniert die Abfrage.

=> Frage selbst beantwortet, nicht geholfen. :(
 
hätte ja sein können, dass wenn im ersten glied des arrays ein boolischer wert steht, dass php dann diesen zuerst interpretiert.

aufgrund dieser tatsache bin ich überhaupt auf die frage gestoßen:

$test = true;
unset($test);

if($test){ echo "erfolgreich"; }
else { echo "misslungen"; }

ausgabe: misslungen

und

$test = false;

if($test)){ echo "erfolgreich"; }
else { echo "misslungen"; }

ausgabe: misslungen

in beiden fällen ist der test misslungen obwohl im 2. fall die variable noch existiert, also true wäre.
 
nein. du prüfst ja den inhalt der variable - und den hast du vorher selber auf false gesetzt.
die existenz einer variable prüft man mit isset().
 
isset() ist nicht zwingend notwendig!

denn:

$test = "teststring";

if($test){ echo "erfolgreich ".$test }
else { echo "misslungen" }

ausgabe: erfolgreich teststring
 
Zurück