Anzahl an Inhalten in XML Datei auslesen

intercorni

Erfahrenes Mitglied
Hallo.
Ich habe eine XML Datei, in der verschiedene Frage enthalten sind.
Die Anzahl der Fragen lese ich so aus:
PHP:
XMLdaten.onLoad = function(success) {
      anzahlThemen = XMLdaten.firstChild.childNodes.length;//Themen
      anzahlFragen = []; //neues Array
      for (var i=0; i<anzahlThemen; i++) {//alle Themen durchzählen-------------------------------------
          //Anzahl der Fragen des jeweiligen Themas auslesen und ins Array schreiben
          anzahlFragen[i] = XMLdaten.firstChild.childNodes[i].childNodes.length;
      }
	  trace(anzahlFragen[0]);
Das trace gibt mir dann die Anzahl der Fragen aus, z.B. 12 = 12 Fragen in der XML Datei.
Nun bin ich bisher immer von 10 Fragen ausgegangen, weil die Anzahl an 10 Fragen nie überschritten wurde. Bis jetzt :-)
Diese 10 Fragen wurden per Zufallsgenerator angezeigt. Dies hatte ich so gelöst:
PHP:
//Random für Fragen festlegen
function random_thema1() { 
	var numbers:Array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 
var i:Number = 0
    while (numbers.length) { 
      
        this["randomNr" + i++] = numbers.splice( Math.floor( Math.random() * numbers.length ), 1 )[0]; 
    }; 
}; 
random_thema1(); 
//trace(randomNr0);
trace(anzahlFragen[0]);
Bei diesen Scripting bin ich jedoch auf die Anzahl von 10 Fragen festgelegt. Nun würde ich gerne die bereits ausgelesene Anzahl der Fragen (trace(anzahlFragen[0]);) zum Erzeugen des Arrays verwenden und daraus dann eine Zufallszahl je nach vorhandenen Fragen generieren lassen.
Habe ich also nun 12 Fragen, so soll mir ein Zufallswert von 0 bis 11 ausgegeben werden.
Wie löse ich also diese 10ner Limitierung auf:
PHP:
var numbers:Array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
Wie kann ich dafür die ausgelesene Anzahl der Fragen nurtzen:
PHP:
trace(anzahlFragen[0]);
Das geht doch irgendwie mit einer Schleife?
Am Ende benötige ich dann die Ausgabe einer entsprechenden randomNr abhängig von der jeweiligen Anzahl der Fragen.
Doch wie?
 
Hi,

also wenn ich dich nun richtig verstanden habe, willst du ein Array erstellen mit den Werten 0-11. Wenn dem so ist, und es variabel bleiben soll je nach anzahl in der XML, dann mach es mit einer For schleife.

ungefair jetzt mal so:

count = 0;
for (i=0; i< array.lenght; i++){
NumArray.push(count);
count++;
};

Sollte so en, der Code muss nun nicht genau stimmen, hab die Syntax im Mom nich im Kopf, weil ich noch andere Sprachen lerne.

Nochmal als Text geschrieben:
Variable Count ist 0.

Solange i kleiner als die XML-Array-länge ist
schreibe einen neuen Wert in das Array, den Wert aus Count nehmen.
Count um 1 erhöhen usw....


Hoffe es hilft dir ;)

mfg
 
Mit einer Schleife, die mir die Arrays an Hand der ausgelesenen Anzahl der Fragen erstellt, habe ich schon etwas experimentiert:
PHP:
var myArr:Array = new Array();
function initArray(arrayLength:Number):Void {
  //var i:Number;
  var i:Number = 0
  for(i = 0; i < arrayLength; i++) {
    myArr[i] = i;
  }
}
initArray(anzahlFragen[0]);
trace(myArr); // 1,2,3...
Bei 12 Fragen gibt mir ein Trace auf myArr dann aus: 0,1,2,3,4,5,6,7,8,9,10,11
Das klappt schonmal.
Nun muss nur noch die Reihenfolge per Zufall bestimmt werden, sodass z.B. Frage 1 nicht in Array 1 landet, sondern eben ein zufälliger Wert bestimmt wird.
Doch wie geht das?

Danke,

Cornel
 
Hi

Du kannst doch bei jedem Aufruf der Frage eine Zufallszahl zwischen 0 und 11 generieren.
Dann benutzt du diese Zahl um eine Frage auszuwählen --> myArr[randomNum]

Und bevor du die Zahl benutzt, packst du diese Zahl noch in ein extra Array mit den schon verwendeten Zahlen. Bevor du die Zufallszahl dann benutzt, prüfst du, ob die generierte Zahl schon im Array der verwendeten Nummern drin steht.

Hoffe es war verständlich ausgedrückt ;)

mfg
 
Zurück