Problem mit array_search()

meilon

Erfahrenes Mitglied
Hi,
Ich habe schon in dem Forum danach gesucht, aber nix passendes Gefunden.
Ich bastele mir zur Zeit ein Serverstats-Script für unseren Clan-Battlefield Server. Um an diese Heranzukommen benutze ich QStat2.5c. Die Daten, die ich haben will, bekomme ich auch. Alles schön verpackt im Array Stats. Dort sind alle Einstellungen und Spieler angegeben, so in dieser Form
Code:
gametype=conquest
Da bei einigen Servern nicht so wichtige Einstellungen wie "language" nicht immer mitgegeben wird, ändert sich der Key, wo sich gerade diese Einstellung befindet. Nun wollte ich diese Daten aber Fehlerfrei Ausgeben. Da habe ich die Funktion [PHPF]array_search[/PHPF] gefunden. Beim ersten einsatz, ein / in einem anderen Array zu finden (24/26, Spielerzahl war gesucht), schlug fehl, da die Funktion wohl von hinten sucht. mit nem [phpf]array_reverse[/phpf] war die Sache gelöst.
Aber jetzt findet er gametype nicht, da hilft kein array_reverse() mehr. Was soll ich tun? Wird wohl nix mit der anzahl der Elemente haben (ca. 110 bei 15 Spielern), oder?

mfg
Klink
 
heisst das, dein Array n Elemente mit der Form KEY=VALUE?
Dann würde ich einfach das Stat-Array durchlaufen, jeden Datensatz splitten mit explode("=", $aktuelles_element). Das daraus resultierende Array verwendest du um ein neues mit den geünschten Daten aufzubauen, das du dann ein neues Array hast, z.b. in der Form

$neues_array = array("language" => "die sprache", usw);

So kannst du beim Durchlaufen des urpsünglichen Arrays gleich auch rausfiltern was du brauchst bzw was dir noch fehlt.

Hoffe das geht so in die Richtung?
 
nein, das array sieht so aus:

16 => "gametype=conquest"

Ich will die Values nach gametype durchsuchen lassen und mit dem daraus resultierenden Key 16 einen neuen array mit

$gametype=explode("=",$array)

erzeugen. Dann gebe ich einfach mit

echo gametype[1]

den Gametype aus, aber das geht irgendwie net. Die Funktion gibt immer FALSE zurück, ale wenn sie es nicht gefunden hätte.
 
naja dann mach dir eben deine eigene suche und durchlaufe das vorhandene Array und suche mit strpos. Wenn gefunden kopiere es bzw gib es aus...

PHP:
foreach( $array as $value )
{
 if( strpos($value, "gametype") !== FALSE)
  {
    list(,$gametype) = explode("=", $value);
     echo 'Gametype: '.$gametype;
    break; //es sei denn du suchst noch was naderes...
  }
}

nach einem kurzen Test, da in der Doku nix genaues stand, ist mir nur aufgefallen, das wenn ein Array-Element nurden Wert "test" enthält und ich danach suche, findet er das Elelemt. Enthält es jedoch nicht exakt "test", sondern z.B. "test..." oder "testbla", findet es das ganze nicht....
 
Zuletzt bearbeitet:
Zurück