phpbar.de logo

Mailinglisten-Archive

[php] Warum nicht: $bar = (3 == $foo) ? &$foo : &$foo ?

[php] Warum nicht: $bar = (3 == $foo) ? &$foo : &$foo ?

Ulf Wendel ulf.wendel_(at)_phpdoc.de
Tue, 12 Dec 2000 00:23:41 +0100


eschmid+sic_(at)_s.netic.de wrote:
> 
> On Mon, Dec 11, 2000 at 11:33:33PM +0100, eschmid+sic_(at)_s.netic.de wrote:
> > On Mon, Dec 11, 2000 at 11:21:38PM +0100, Ulf Wendel wrote:
> >
> > > eschmid+sic_(at)_s.netic.de wrote:
> > > >
> > > das Beispiel ist witzlos. Ich wundere mich über den Parse Error, des
> > > Originals. Der bedingte Ausdruck scheint nicht im Zusammenhang mit
> > > Referenzen erlaubt. Warum ist das so?
> > >
> > > $data = ("GET" == $this->method) ? &$GLOBALS["HTTP_GET_VARS"] :
> > > &$GLOBALS["HTTP_POST_VARS"];
> > > Parse error: parse error in ....
> >
> > Das weiß ich jetzt auch nicht und auf die Language Spec hab ich auch nur
> > bedingt Zugriff. Zuhause ist meine Festplatte etwas klein geraten oder sie
> > ist irgentwie zu voll.
> 
> Nachtrag: Vielleicht wird man aus dem PHP Manual schlau, es ist in Kapitel
> 9 "Expressions" versteckt. Weitere Hinweise über den richtigen Gebrauch

Danach ist die Bedeutung identisch mit der in C.

> des "Ternary Conditional Operators" entnehme man den englischen
> Listenarchiven zu PHP. Als Suchwort braucht man nur "grandmother"

Oh, je, wieviele Easter Eggs und Eselsbrücken gibt es denn noch...

> einzugeben und dann sollte man das Quick Tutorial von Rasmus Lerdorf
> finden. Vielleicht lässt dieses weiteres auf das Fehlverhalten er Ternary
> Operators zu.

Nein, der Text hilft nicht wirklich. Ich erwarte, das der bedingte
Ausdruck genauso arbeitet wie unter C, wo er sich nicht an
Adreßoperationen stört. Ich sehe keinen Grund, warum PHP sich anders
verhalten sollte. 

#include <stdio.h>

int main() {

  int a = 10;
  int *b;

  b = (a > 1) ? &a : &a;
  printf("%d\n", *b);
 
  return 0; 
}

Ulf


php::bar PHP Wiki   -   Listenarchive