Adrian: Anfängerproblem: Array?

Hallo!

Ursprünglich war gedacht, dass ich einfach den code für width und height einfüge. allerdings komme ich nicht so ganz klar, nachdem ich eingesetzt habe:

  
<img alt="blabla" <?php image_size("../pictures/layout.gif") ?> />  

Ich finde den Fehler nicht in folgendem Code, es wird immer angezeigt:

Parse error: parse error, unexpected '[', expecting ',' or ';'

  
function image_size($imglocation) {  
echo "src=\"".$imglocation."\" ";  
echo getimagesize($imglocation)[3];  
}  

Mit freundlichen Grüßen,
Adrian

  1. hi,

    echo getimagesize($imglocation)[3];

    Trenne das mal auf:
    $bildmasse = getimagesize($imglocation);
    echo $bildmasse[3];

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Guten Tag!

      Trenne das mal auf:
      $bildmasse = getimagesize($imglocation);
      echo $bildmasse[3];

      Gute Idee, funktioniert aber leider bei mir nicht... :( hab ich auch schon probiert...

      Mit freundlichen Grüßen,
      Adrian

    2. Hi,

      echo getimagesize($imglocation)[3];

      Trenne das mal auf:
      $bildmasse = getimagesize($imglocation);
      echo $bildmasse[3];

      warum ist das eigentlich notwendig?

      Schöne Grüße
      Julian

      --
      "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rich Cook
      http://derjulian.net
      1. hi,

        warum ist das eigentlich notwendig?

        Ich denke mal deshalb, weil Ausdrücke dieser Art von rechts nach links ausgewertet werden - und _bevor_ getimagsize() ein Array zurückgegeben hat, gibt es nun mal nichts, worauf man indexbasiert zugreifen könnte.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi,

          warum ist das eigentlich notwendig?

          Ich denke mal deshalb, weil Ausdrücke dieser Art von rechts nach links ausgewertet werden - und _bevor_ getimagsize() ein Array zurückgegeben hat, gibt es nun mal nichts, worauf man indexbasiert zugreifen könnte.

          danke für die Erklärung. Macht das der Python- oder Perl-Parser z. B. auch von rechts nach links?

          Schöne Grüße
          Julian

          --
          "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rich Cook
          http://derjulian.net
          1. Hi Julian!

            warum ist das eigentlich notwendig?

            Ich denke mal deshalb, weil Ausdrücke dieser Art von rechts nach links ausgewertet werden - und _bevor_ getimagsize() ein Array zurückgegeben hat, gibt es nun mal nichts, worauf man indexbasiert zugreifen könnte.

            danke für die Erklärung. Macht das der Python- oder Perl-Parser z. B. auch von rechts nach links?

            Also in Python könnte man das sehr wohl so schreiben, zum Beispiel:

              
            for i in range(len(lines)):  
                # hier kann man nun direkt auf das erste Listenelement zugreifen,  
                # ohne dass man lines[i].split(':') zuerst einer weiteren Variable  
                # zuweisen müsste  
                if lines[i].split(':')[0] == self.__username:  
                    print 'User is known'  
                else:  
                    print 'User is not known'  
            
            

            Ich persönlich sehe das ein als einen großen Vorteil an, da man sich so einfach die Verwendung weiterer, unnütziger Variablen spart und die Python-Variante zudem wesentlich schneller geschrieben ist.

            Grüße,
            Fabian St.

            1. Hallo Fabian,

              warum ist das eigentlich notwendig?

              Ich denke mal deshalb, weil Ausdrücke dieser Art von rechts nach links ausgewertet werden - und _bevor_ getimagsize() ein Array zurückgegeben hat, gibt es nun mal nichts, worauf man indexbasiert zugreifen könnte.

              danke für die Erklärung. Macht das der Python- oder Perl-Parser z. B. auch von rechts nach links?

              Also in Python könnte man das sehr wohl so schreiben, zum Beispiel:

              for i in range(len(lines)):
                  # hier kann man nun direkt auf das erste Listenelement zugreifen,
                  # ohne dass man lines[i].split(':') zuerst einer weiteren Variable
                  # zuweisen müsste
                  if lines[i].split(':')[0] == self.__username:
                      print 'User is known'
                  else:
                      print 'User is not known'

              
              >   
              > Ich persönlich sehe das ein als einen großen Vorteil an, da man sich so einfach die Verwendung weiterer, unnütziger Variablen spart und die Python-Variante zudem wesentlich schneller geschrieben ist.  
                
              danke für das Beispiel. Python ist eine sehr schöne Sprache, wie ich finde, obwohl ich PHP weitaus besser programmiere...  
                
              Schöne Grüße  
              Julian
              
              -- 
              "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rich Cook  
                
              <http://derjulian.net>
              
        2. 你好 wahsaga,

          warum ist das eigentlich notwendig?

          Ich denke mal deshalb, weil Ausdrücke dieser Art von rechts nach links
          ausgewertet werden - und _bevor_ getimagsize() ein Array zurückgegeben
          hat, gibt es nun mal nichts, worauf man indexbasiert zugreifen könnte.

          Naja, das stimmt nicht so recht. Da sitzt einfach nur ein Parser hinter,
          der das prüft - und dieser Fall ist nunmal verboten worden. Vielleicht,
          weil die Programmierer das nicht bedacht haben, vielleicht auch aufgrund
          von Prioritäts-Problemen.

          Wie ein Ausdruck ausgewertet wird, hängt an der Operator-Rangreihenfolge.
          Beispiel: $a = 10 + 5 + 7 + 3; Intern wird daraus (abhängig vom
          Parser-Typen) entweder

          =
           $a   +
              10  +
                 5  +
                   7  3

          oder

          =
               +      $a
             +  10
           +  5
          3 7

          Zuerst wird der unterste Knoten ausgewertet, danach der darüber, etc, pp.
          Die Reihenfolge der Auswertung hat also nur sekundär etwas damit zu tun,
          wie herum ein Parser parsed.

          Der Ausdruck echo getimagesize($imglocation)[3]; müsste also wie folgt
          geparsed werden:

          echo
                                     []
          getimagesize($imglocation)    3

          Vermutlich geht das auch, wenn man (getimagesize($imglocation))[3] schreibt.

          Ich könnte mir noch vorstellen, dass, wenn dieser Fall erlaubt wird, die
          Grammatik nicht mehr eindeutig ist für diesen Parser-Typen. Heisst, wenn
          getimagesize($imglocation)[3] geschrieben wird, was ist dann gemeint? Es
          könnte ja auch

          []
          getimagesize ($imglocation) 3

          gemeint sein.

          再见,
           克里斯蒂安

  2. Hi Adrian!

    Ich bin erstaunt, dass du immer noch keine Hilfe bekommen hast. :)

    Der Fehler liegt in dieser Zeile:

    <img alt="blabla" <?php image_size("../pictures/layout.gif") ?> />

      
    Es fehlt ein ";". Na? ;-)  
      
    MfG H☼psel
    
    -- 
    "It's amazing I won. I was running against peace, prosperity, and incumbency."  
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001  
      
    [Selfcode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    
    1. 你好 Hopsel,

      Der Fehler liegt in dieser Zeile:

      <img alt="blabla" <?php image_size("../pictures/layout.gif") ?> />

      
      >   
      > Es fehlt ein ";". Na? ;-)  
        
      Das ist leider falsch. Das Semikolon kann weggelassen werden, wenn ein  
      anderer Begrenzer (in diesem Fall ?>) folgt.  
        
      再见,  
       克里斯蒂安  
      
      -- 
      [Neuer alter Plasma-Bildschirm](http://ck.kennt-wayne.de/neuer-alter-plasma-bildschirm) | [Meine Schultüte](http://ck.kennt-wayne.de/meine-schultuete)  
      Ganz gleich, welchen Weg ich wähle, ich kehre heim.  
        
      <http://wwwtech.de/>  
      
      
      1. Hi Christian!

        Das ist leider falsch. Das Semikolon kann weggelassen werden, wenn ein
        anderer Begrenzer (in diesem Fall ?>) folgt.

        Oha. Aber ich darf es trotzdem hinschreiben, ja? Ich gehe mal davon aus... Es funzt schließlich. :)

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        1. 你好 Hopsel,

          Das ist leider falsch. Das Semikolon kann weggelassen werden, wenn ein
          anderer Begrenzer (in diesem Fall ?>) folgt.

          Oha. Aber ich darf es trotzdem hinschreiben, ja?

          Sicher - sonst hätte ich geschrieben "_muss_ weggelassen werden" ;)

          再见,
           克里斯蒂安

          1. Hi Christian!

            Sicher - sonst hätte ich geschrieben "_muss_ weggelassen werden" ;)

            Ich weiß. Aber wenn ich nicht nahcgefragt hätte, dann hättest du mir auch nicht zugezwinkert. :)

            MfG H☼psel

            --
            "It's amazing I won. I was running against peace, prosperity, and incumbency."
            George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
            Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)