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