mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 21:48 Benutzername: Passwort: Auto-Login

Thema: [PHP] Array-Problem... vom 13.12.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Array-Problem...
Seite: 1, 2  Weiter
Autor Nachricht
Ragnaroek
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 13.12.2006 12:56
Titel

[PHP] Array-Problem...

Antworten mit Zitat Zum Seitenanfang

Hallo allerseitz...

Habe ein kleines Denk-Problem mit Array's bei PHP. Da meine PHP-Kentnisse ein wenig "eingerostet", daher bekomme ich das so nicht mehr zusammen...

Also:

es geht um ein Quiz. Die Fragen kommen über eine ID aus einer XML-Datei und sollen per zufall ausgewählt werden. Jetzt kommt mein Problem. Es soll natürlich auch keine Frage doppelt kommen. Mein Denkansatz:

Beim erstellen der Zufallszahl wird in einem Array nachgeschaut ob die Zahl schon mal vorhanden war. Wenn ja, wird einfach eine neue Zufallszahl generiert, wenn nicht wird diese Zahl in das Array geschrieben und die Frage ausgegeben. Soweit die Theorie. Nur die Umsetzung macht mir Probleme. Im Grunde brauche ich nur den Teil in dem das Array ausgelesen wird, verglichen und gesdchrieben. Den Rest habe ich schon. Hier das was ich mir aus dem Kopf gedrückt habe was sicherlich falsch ist:

Code:
<?php

   $zahlenfeld = array(1, 2, 3, 4);
   $i=0;
   
   for ($i =Si; $frage_id==$zahlenfeld[$i]; $i = $i)
   {
      echo 'Zahl ' . $zahlenfeld[$i] . ' ist schon vorhanden';
      $i++;
   }
   
   echo 'Zahl ' . $zahlenfeld[$i] . ' ist nich nicht vorhanden und wurde hinzugefügt';
   $zahlenfeld[$i] = $frage_id;

?>


Hat jemand zufällig ein wenig Hilfe für mich? *zwinker*

Danke

Ragna
 
Sarky

Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht: Männlich
Verfasst Mi 13.12.2006 13:18
Titel

Antworten mit Zitat Zum Seitenanfang

Code:

do
{
   $randomNumber = rand();
}
while (in_array($randomNumber, $occuredNumbers))

$occuredNumbers[] = $randomNumber;
  View user's profile Private Nachricht senden
Anzeige
Anzeige
schachbrett

Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht: Männlich
Verfasst Mi 13.12.2006 13:34
Titel

Antworten mit Zitat Zum Seitenanfang

Oder du baust dir einfach ein Feld mit allen verfügbaren IDs auf:

Code:
$id = Array( 1, 2, 3, 5, ... );


schnappst dir eine Zahl aus diesem Array:

Code:
$z = rand( 0, count( $id ) - 1 );
$myid = $id[ $z ];


und loescht die gebrauchten IDs:

Code:
unset( $id[ $z ] );
  View user's profile Private Nachricht senden
Ragnaroek
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 13.12.2006 13:40
Titel

Antworten mit Zitat Zum Seitenanfang

Die idee ist ja noch einfacher...und damit würde das Verlgeichen auch wegfallen...

Prima...danke..*zwinker*
 
Ragnaroek
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 13.12.2006 14:12
Titel

Antworten mit Zitat Zum Seitenanfang

Hab das jetzt mal so gemacht:

Code:
<?php

   $fragen_id = array (1, 2, 3, 4, 5, 6, 7, 8, 9 ,10);
   
   for($i=10; $i >= 0; $i--)
   {
      $z = rand( 0, count( $fragen_id ) - 1 );
      $myid = $fragen_id[$z];
      
      echo ' ' . $myid . '<br />';
   
      unset( $fragen_id[$z] );
   }
?>


eigentlich müssten dann per Zufall alle ID's ausgegeben werden. Nur habe ich auch "leere" ausgaben dazwischen und nicht alle Zahlen erscheinend...hab ich was falsch gemacht?
 
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mi 13.12.2006 14:34
Titel

Antworten mit Zitat Zum Seitenanfang

Für sowas gibt es http://de.php.net/array_rand
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Havok

Dabei seit: 05.08.2005
Ort: Nürnberg
Alter: 43
Geschlecht: Männlich
Verfasst Mi 13.12.2006 14:38
Titel

Antworten mit Zitat Zum Seitenanfang

Probier's mal hiermit.
Nutzt die eben angesprochene Funktion.

Code:

$fragen_ids = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

// Wir brauchen 10 Fragen
for($i = 10; $i > 0; $i--)
{
    // Wähle eine der verfügbaren IDs zufällig aus
    $index = array_rand( $fragen_ids, 1 );

    // Stelle irgendetwas mit der ID an
   echo $fragen_ids[$index] . '<br />';

    // Lösche die ID aus der Liste
   unset( $fragen_ids[$index] );
}


Zuletzt bearbeitet von Havok am Mi 13.12.2006 14:39, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mi 13.12.2006 14:48
Titel

Antworten mit Zitat Zum Seitenanfang

Wenn du immer alle zehn ausgeben willst, wäre shuffle wohl angebracht:

Code:
$ids = range(1, 10);
shuffle($ids);
foreach ($ids as $id) {
   echo $id."<br />";
}
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Fieses PHP/MySQL-Skript gibt nur "Array Array Array..." aus
Array Problem
if Problem mit array
Problem mit zweidimensionales array
[PHP]Problem mit mehrdimensionalem Array
Problem mit Array bzw .csv-Einbindung
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.