Christian Seiler: zu PHP

Beitrag lesen

Hallo Raik,

Btw: was soll denn der Code überhaupt machen? ;-)

es tritt ein fehler in 1+(int)(rand($i)); auf, obwohl die doku aussagt, dass die argumente optional sind.

Die deutsche Doku ist fehlerhaft, in der englischen Doku ist's klar: http://de3.php.net/en/rand - entweder gar kein Parameter oder halt beide - einer alleine geht nicht. Du suchst wahrscheinlich rand(0,$i).

ein weiterer fehler tritt in $x=array_shift($i); auf. da bin ich über die perl-syntax ratlos. wieso wird da in perl der variablen $x die funktion shift zugewiesen??? wie werden in perl parameter an die subroutinen übergeben?

Also, in Perl stehen in @_ alle Parameter der Subroutine. Wenn Du shift; machst, dann wird aus der Liste @_ der erste Wert geholt. D.h. mit

sub c {  
  $x = shift;  
}

steht danach in $x der erste Parameter. Du hättest alternativ $x = $_[0]; machen können, wäre genauso gegangen (allerdings wird bei shift der Parameter aus der Liste entfernt, bei der einachen Zuweisung nicht - hier spielt das bloß keine Rolle). Du willst also in PHP den Parameter am besten $x statt $i nehmen und array_shift ganz bleiben lassen. Wenn Du es *wirklich* Perl-Style haben willst, dann musst Du in PHP folgendes machen:

function c () {  
  $args = func_get_args();  
  $x = array_shift($args);  
}

Ist aber in der Form bei festgelegenten Parametern in PHP absoluter Schwachsinn, ist eigentlich nur interessant, wenn die Anzahl an Parametern variieren kann.

Viele Grüße,
Christian

--
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup