johannes293: echo gibt nicht inhalt des arrayelements aus

Ich habe hier ein eher ungewoenliches Problem; oder ich habe zuwenig geschlafen; echo liefert - im Gegensatz zu var_dump nicht korrekt ausgegeben.
Das ganze Beispiel auf http://swobo.at/test.php?projekt=abc8

Eine GET-Variable wird in einem anderen array gespeichert:

<?php  
error_reporting(E_ALL);  
$projekt['nom']=$_GET['projekt']; ?>

danach wird die get-variable und die kopie der getvariable ausgegeben:
echo get[projekt]: <?php echo $_GET['projekt']; ?>
<br />
echo projekt[nom]:<?php echo $projekt['nom']; ?>
<br />
Kurioser Weise haben diese nicht den selben Inhalt; die Kopie der Variable enthaelt nur den ersten Buchstaben des GET-Strings.

Zur Kontrolle werden die Inhalte der Arrays mit var_dump ausgegeben. alles scheint OK zu sein.
var_dump $_GET:
<?php var_dump ($_GET); ?>

<br />  
var_dump $projekt: 

<?php var_dump($projekt); ?>

Die gesamte Ausgabe:
echo get[projekt]: abc8
echo projekt[nom]:a
var_dump $_GET: array(1) { ["projekt"]=> string(4) "abc8" }
var_dump $projekt: string(4) "abc8"

Dies ist leider kein Scherz - ich verweise nochmal auf das Beispiel am Server...
vielleicht hilft die Ausgabe von phpinfo(); des servers

  1. Wow, das gehört mit zu den krassesten Dingen, die ich je gesehen habe. Also es liegt nicht am Schlafmangel, ich bin auch verwirrt.

    1. Wow, das gehört mit zu den krassesten Dingen, die ich je gesehen habe. Also es liegt nicht am Schlafmangel, ich bin auch verwirrt.

      das ist beruigend einerseits, beunruigend andererseits...
      Kann es sein, dass der Provider was verbockt hat?

      g johannes

      1. Hi,

        Kann es sein, dass der Provider was verbockt hat?

        Ja, register_globals auf on gelassen ...
        (Ich tippe darauf, dass es irgendein Nebeneffekt davon ist.)

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Hi,

          Kann es sein, dass der Provider was verbockt hat?
          Ja, register_globals auf on gelassen ...
          (Ich tippe darauf, dass es irgendein Nebeneffekt davon ist.)

          TAAAT-SACHE!
          hab register_globals mittels .htaccess auf off gesetzt, und die Welt ist wieder in Ordnung!
          man dankt.

          g johannes

  2. was ich vergessen habe dazuzuschreiben: auf meinem Mac OS X 10.5 (built-in apache) ist das ergebnis von  <?php echo $_GET['projekt']; ?>
    und <?php echo $projekt['nom']; ?>
    das selbe...
    kann es sein, das irgendetwas unter mac (apache) funktioniert, nicht aber unter linux (apache)?

    g johannes

  3. Ich habe hier ein eher ungewoenliches Problem; oder ich habe zuwenig geschlafen;

    Wohl eher Letzteres ;-)

    echo liefert - im Gegensatz zu var_dump nicht korrekt ausgegeben.

    Nein - selbst, wenn das ein deutscher Satz wäre, würde er wohl nicht stimmen ;-)

    <?php echo $_GET['projekt']; ?>
    <?php echo $projekt['nom']; ?>

    Hier vergleichst Du $_GET["projekt"] mit $projekt["nom"].

    <?php var_dump ($_GET); ?>
    <?php var_dump($projekt); ?>

    Und hier siehst Du lediglich, dass $projekt denselben Wert hat wie $_GET["projekt"], nicht aber $projekt["nom"].

    Das Problem dürfte sein, dass $projekt zum Zeitpunkt Deiner Zuweisung

    $projekt['nom']=$_GET['projekt']; ?>[/code]

    bereits existiert und kein Array ist. Versuch mal zum Test folgendes Skript:

      
    <?php  
    $testvar = "string";  
    $testvar[0] = "Eintrag im Array";  
    var_dump($testvar);  
    ?>  
    
    

    Dann siehst Du, was los ist.

    Viele Grüße,
    der Bademeister

    1. Das Problem dürfte sein, dass $projekt zum Zeitpunkt Deiner Zuweisung

      $projekt['nom']=$_GET['projekt']; ?>[/code]

      bereits existiert und kein Array ist. Versuch mal zum Test folgendes Skript:

      <?php
      $testvar = "string";
      $testvar[0] = "Eintrag im Array";
      var_dump($testvar);
      ?>

      
      >   
      > Dann siehst Du, was los ist.  
        
      Aha, mit $testvar[0] = wird das erste Zeichen von $testvar manipuliert! Ich muss dazusagen, dass ich nicht daran gedacht habe, dass $projekt schon existiert - sch... register\_globals.  
        
      g johannes
      
      1. echo $begrüßung;

        Ich muss dazusagen, dass ich nicht daran gedacht habe, dass $projekt schon existiert - sch... register_globals.

        Nein, du selbst bist dran schuld, wenn du Variablen vor dem Gebrauch nicht ordentlich initialisierst. Mit $projekt = array(); wär das nicht passiert.

        echo "$verabschiedung $name";