| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

27-01-2010, 09:52
|
|
Dirk-Kiel
Registrierter Benutzer
|
|
Registriert seit: Feb 2003
Beiträge: 41
|
|
Zufallswiedergabe eines 1 Dim Arrays
Moin moin,
als kleines Snippet bräuchte ich eine Zufallswiedergabe eines Arrays,
in welchem 4 Strings enthalten sind, aber immer nur 2 zur Anzeige kommen.
Diese 2 sollten nicht doppelt und eben bei jedem Reload der Seite
unterschiedlich sein.
Dazu habe ich bereits angefangen, das haut aber nicht hin. Ich bekomme nicht
den String "Text1" etc. als Ausgabe.
Wer mag mir dabei helfen und mich in die Richtung stupsen?
PHP-Code:
<?php
$array = array("Text1", "Text2", "Text3", "Text4");
array_rand($array, 2);
// var_dump($array);
foreach($array as $key => $elem){
echo $elem."<br />";
}
?>
Danke im vorraus für Konstruktives.
Gruß
|

27-01-2010, 12:10
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Ort: Dresden
Beiträge: 5.463
|
|
Hallo,
zuerst mal solltest du dir im Handbuch durchlesen, wie array_rand funktioniert und vor allem was es zurück gibt. Beispiele sind ja dort auch dabei, zum besseren Verständnis.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-01-2010, 12:36
|
|
dhcomputer
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 17
|
|
Zitat:
Zitat von Dirk-Kiel
Diese 2 sollten nicht doppelt und eben bei jedem Reload der Seite unterschiedlich sein.
|
also wenn es bei jeden Reload der Seite unterschiedlich sein sollte, dann wirst du per Zufall gar nichts erreichen können.
Dann muss es ja ein Gedächnis geben in Form von einem Sessioneintrag oder aus der Datenbank geholt werden.
Ist mit Reload der einzelne Benutzer gemeint oder generell?
Beispiel:
User 1 sieht 1 und 2
User 2 sieht 3 und 4
Nach einem Reload dann
User 1 sieht 3 und 4
User 2 sieht 1 und 2
??
Oder habe ich da jetzt einen Denkfehler?
__________________
Professionelle und innovative Programmierung
|

27-01-2010, 17:20
|
|
Dirk-Kiel
Registrierter Benutzer
|
|
Registriert seit: Feb 2003
Beiträge: 41
|
|
Hi,
falsch ausgedrückt.
Natürlich können die Strings mehrmals kommen, nur nicht gleichzeitig
doppelt :
Text1, Text3 oder
Text1, Text4 oder
Text2, Text3
aber nicht
Text1, Text1 etc
CU
|

27-01-2010, 17:33
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.865
|
|
Wie wäre es mit shuffle() und array_slice() ?
Oder wenn die Daten aus der DB kommen direkt mit
"ORDER BY RAND() LIMIT 2"
|

28-01-2010, 02:20
|
|
dhcomputer
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 17
|
|
Um beim Eingangsbeispiel zu bleiben:
PHP-Code:
<?php
$array = array("Text1", "Text2", "Text3", "Text4");
// array_rand liefert zufällige array keys zurück
$keys = array_rand($array, 2);
// erhaltene keys durchlaufen
foreach($keys as $key)
{
// array mit angabe des key ausgeben
echo $array[$key]."<br />";
}
?>
__________________
Professionelle und innovative Programmierung
|

28-01-2010, 11:29
|
|
Dirk-Kiel
Registrierter Benutzer
|
|
Registriert seit: Feb 2003
Beiträge: 41
|
|
Hi,
@dhcomputer: danke, das war sehr hilfreich.
Meinen Denkfehler habe ich damit gefunden.
@AmicaNotis: auch dir dank, diese Seite hatte
ich mir schonmal zu Gemüte geführt.
Eins vielleicht noch:
wenn ich jetzt z.B. von 4 auf 8 Strings gehe, mir alle 8
durcheinander wirbeln lasse und nach 4 Strings eine Aktion
stattfinden soll (Umbruch, Tabelle...was auch immer) danach
die restlichen 4 Strings kommen, muß ich den Zähler $i
auf was richten?
CU
|

28-01-2010, 12:09
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Ich sehe hier zwar kein $i, aber behaupte einfach mal 4.
|

28-01-2010, 12:21
|
|
Dirk-Kiel
Registrierter Benutzer
|
|
Registriert seit: Feb 2003
Beiträge: 41
|
|
PHP-Code:
<?php
$array = array("Text1", "Text2", "Text3", "Text4", "Text5", "Text6", "Text7", "Text8");
// array_rand liefert zufällige array keys zurück $keys = array_rand($array, 8);
// erhaltene keys durchlaufen foreach($keys as $key) { // array mit angabe des key ausgeben echo $array[$key]."<br />"; // jetzt kommen ja alle untereinander gelistet, // hier wäre es aber sinnvoll für mich nach 4 erst umzubrechen }
?>
Wie stelle ich es an, dass ich mit count (?) nach 4mal $key erst den Zeilenumbruch mache und die anderen 4 danach kommen?
PHP-Code:
$count = count($array) ; // gibt mir die komplette Anzahl an
CU
|

28-01-2010, 12:42
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Ort: Dresden
Beiträge: 5.463
|
|
Das $keys-Array hat selbst auch wieder einen Key, wenn du also
PHP-Code:
foreach ($keys as $i => $key)
schreibst, kannst du bei $i == 4 vorher den Umbruch machen.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

28-01-2010, 14:18
|
|
Dirk-Kiel
Registrierter Benutzer
|
|
Registriert seit: Feb 2003
Beiträge: 41
|
|
Danke AmicaNoctis, das war hilfreich.
Danke auch an alle anderen.
CU
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|