zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden PHP - Array Zufallsausgabe einzelner Elemente

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 05.03.2015, 14:28
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 05.02.2015
Beiträge: 2
schoen_t befindet sich auf einem aufstrebenden Ast
Frage PHP - Array Zufallsausgabe einzelner Elemente

Hallo Forum,

ich habe eine Frage und zwar habe ich folgendes Array:

PHP-Code:
<?php
  $woerter 
= array("Pfenning""Apfel""Pferd""Amsel");
?>
Das möchte ich jetzt so durchlaufen, dass jedes Wort darin mit "pfe" nominiert ist. Und via Zufallsgenerator sollte daraus nur ein Wort davon ausgeben werden.

Bei jedem Script Durchlauf ein anderes Zufallswort mit "pfe".

Das heißt wohl, dazu brauche ich zwei foreach Schleifen und irgendeine Art Zufallsgenerator. Das da unten sind meine noch funktionierenden Herangehensweisen. Allerdings schaffe ich es nicht, dass das Script nur ein Wort mit "pfe" ausgibt.
Wenn ich den Schlüssel mit einbeziehe oder vorher den array mische (mit shuffle) kommt nicht wirklich ein zufriedenstellendes Ergebnis heraus.

PHP-Code:
foreach($woerter as $schluessel=>$wort)
echo 
$wort,"<br />"
spuckt mir alle Wörter unter einander aus.


PHP-Code:
foreach($woerter as $schluessel=>$wort){
  if (
eregi("pfe"$wort)){
    echo 
$wort,"<br />";
  }

spuckt alle Wörter mit "pfe" untereinander aus.



PHP-Code:
shuffle($woerter);
foreach(
$woerter as $schluessel=>$wort){
  if (
eregi("pfe"$wort)){
      echo 
$wort,"<br />";
  }else{
      echo 
"gar kein wort";
  }
  if(
$schluessel == "0") {break;}

Das wäre für mich das sinnigste, allerdings wird dann manchmal gar kein Wort ausgegeben. Und ich frage mich, ob es nicht eine andere Möglichkeit gibt?

Danke vorab!

Grüße
Tim

Geändert von schoen_t (05.03.2015 um 14:48 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 05.03.2015, 15:21
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 05.02.2015
Beiträge: 2
schoen_t befindet sich auf einem aufstrebenden Ast
Standard

Hab jetzt ein nettes Work-around. Aber vielleicht kennt jemand eine schönere Lösung

PHP-Code:
$woerter = array("Pfennig""Apfel""Pferd""Amsel"); 

        
shuffle($woerter);

foreach(
$woerter as $schluessel=>$wort){
    
$schluessel "1";
    if (
eregi("pfe"$wort)){
        echo 
$wort,"<br />";
    }else{
        
$schluessel "0";
    }
        if(
$schluessel == "1") {break;}

Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 05.03.2015, 16:07
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 02.01.2012
Beiträge: 487
dazzle89 wird schon bald berühmt werden
Standard

Ich bin kein PHP-Gott, aber ich glaube, dass eregi veraltet ist. Stattdessen könntest die Abfrage mit strpos machen.

PHP: strpos - Manual

Mit str_replace sollte es auch möglich sein.

Ansonsten finde ich deine Lösung schon gut.
Mit Zitat antworten
  #4 (permalink)  
Alt 05.03.2015, 16:44
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

stripos wäre eine Möglichkeit.

Eine andere Vorgehensweise wäre es, erst die infrage kommenden Elemente zu ermitteln und dann eins davon zu wählen.

PHP-Code:
$woerter = array("Pfennig""Apfel""Pferd""Amsel");

$filtered array_filter($woerter, function ($element) {
    return 
false !== stripos($element'pfe');
});

if (
count($filtered) > 0) {
    
shuffle($filtered);
    
$element array_pop($filtered);
    
var_dump($element);

Es hängt vom genaueren Kontext der Fragestellung ab, welcher Weg geeigneter ist.

Noch ein, zwei Ideen zu deiner Variante:

PHP-Code:
$woerter = array("Pfennig""Apfel""Pferd""Amsel");

shuffle($woerter);

$found false;

foreach (
$woerter as $wort) {
    if (
false !== stripos($wort'pfe')) {
        
$found true;
        break;
    }
}

if (
$found) {
    
var_dump($wort);

Mit Zitat antworten
Antwort

Stichwörter
foreach, limit, nur ein element, php, zufallsgenerator


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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Var_Dump problem PHP-Freak Serveradministration und serverseitige Scripte 6 04.09.2013 12:29
Ausgabe geschieht nur einmal Benutzername Serveradministration und serverseitige Scripte 0 12.05.2011 15:59
PHP, OOP und Array Übergabe laborix Serveradministration und serverseitige Scripte 35 22.12.2010 12:38
PHP: zweidim. Array mit eindimensionaler Struktur in Eindim. Array umwandeln? braindead Serveradministration und serverseitige Scripte 4 08.07.2008 13:31
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 18:09


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:17 Uhr.