Axel Richter: (PHP) $_Get Probleme mit zweistelligen Werten

Beitrag lesen

Hallo,

Dass aber $myString["dummy"] == $myString[0] ist, war mir auch neu, ist aber offensichtlich so:

PHP wird mir immer unsympathischer ...

Wieso das? Das ist ein absolut logisches Verhalten. "dummy" ist undefiniert (würde bei error_reporting(E_ALL) eine Warnung geben).

Nein, in einem Array würde es eine "Notice: Undefined index dummy in: ..." ergeben. Bei einem String eben nicht. Probier es aus:

  
<?php  
header("Content-Type: text/html; charset=ISO-8859-1");  
error_reporting(E_ALL | E_STRICT);  
  
$myString = "1234";  
echo var_dump($myString)."<br>";  
echo $myString[0]."<br>";  
echo $myString["dummy"]."<br>";  
  
echo "<hr>";  
  
$myArray = array(chr(49), chr(50), chr(51), chr(52));  
echo var_dump($myArray)."<br>";  
echo $myArray[0]."<br>";  
echo $myArray["dummy"]."<br>";  
?>  

Das _ist_ unlogisch.

Im übrigen ist ein String immer ein Array, das kennt man ja schon aus C ;)

Nein. In PHP ist ein String kein Array. Man kann die Array-Schreibweise lesend darauf anwenden. Das ist aber auch schon alles.

  
<?php  
$myString = "1234";  
echo var_dump($myString)."<br>";  
$myString[2]="Hallo Welt";  
echo var_dump($myString)."<br>";  
  
echo "<hr>";  
  
$myArray = array(chr(49), chr(50), chr(51), chr(52));  
echo var_dump($myArray)."<br>";  
$myArray[2]="Hallo Welt";  
echo var_dump($myArray)."<br>";  
?>  

viele Grüße

Axel