rand() und array()

saila

Erfahrenes Mitglied
Hi,

ich habe ein Array mit 9 Zahlen beginnend bei 0. Wenn ich eine Zufallszahl durch rand() erzeugen lasse, erhalte ich zwischendurch (nicht immer) die Fehlermeldung:
Notice: Undefined offset: 9 bezogen auf die folgende Zeile im Script.
PHP:
<?php
$Zahlen = array(0,1,2,3,4,5,6,7,8,9);
?>

Die Zufallszahl wird wie folgt erzeugt:
PHP:
<?php
$Zahl = $Zahlen[rand(0 ,count($Zahlen))];
?>

Wo liegt der Fehler?

Edit: werde künftig mt_rand() verwenden - eben gelesen....
 
Warum machst du dir das so umständlich?

Ganz einfaches Beispiel:

PHP:
<?
  $zufall = rand(1,100);
  ?>

Wobei 1 für das minimum steht und 100 für maximal

Dazu ist der obere teil von dir mit der 0 - 9 nicht notwendig.
 
Hallo!
Hi, so sollte es klappen:

PHP:
<?php
$Zahl = $Zahlen[rand(0 ,count($Zahlen)-1)];
?>

schiese
Nicht bei error_reporting(E_ALL). ;)

Nun, es ist ganz einfach, Dein Array $Zahlen beginnt bei 0 und endet bei 9.
Folglich kann das Array $Zahlen[10] nicht gefunden werden..... daher der undefinierte Index 10.

Mache es so:
PHP:
$Zahl = rand(0 ,count($Zahlen));
Gruss Dr Dau
 
werd es mal einbinden und testen.

Danke.

Edit:
getestet. Alle drei Antworten führen zum Ergebnis - es .
 
Zuletzt bearbeitet:
@ Dr. Dau:
Bei mir gibt er keinen Fehler aus!
PHP:
<?php

error_reporting(E_ALL);

$Zahlen = array(0,1,2,3,4,5,6,7,8,9);
$Zahl = $Zahlen[rand(0 ,count($Zahlen)-1)];
echo $Zahl;
?>

schiese
 
bei error_reporting(E_ALL); muss es je nachdem welcher Zufall entsteht einen Fehler geben. Das hatte ich die ganze Zeit über. Ausser man nimmt das Array() nicht und setzt direkt mt_rand(0, 9);
 
@schiese, ich hatte auch erst die Idee mit -1 (klingt ja eigentlich auch ganz logisch).
Da dieses bei mir aber zu einem Fehler geführt hatte, hatte ich die Idee ganz schnell wieder verworfen.
 
Zurück