[PHP] in_array() frage

Goltergaul

Well-known member
ID: 17553
L
26 April 2006
480
7
hi ich habe hier folgendes fabriziert:

PHP:
if(in_array(array("x" => 1, "y" => 1, "team" => 0 OR 1),$basenarray))

dieses "0 OR 1" funktioniert bloß leider nicht, es wird kein array gefunden obwohl ein mit x=1, y=1 und team=0 vorhanden ist.

wie kann ich das besser machen? möchte nicht 2x in_array() aufrufen müssen:-?

danke
 
0 OR 1 = 1 boolesche Algebra ;)

Willst du ne Bedingung mit Oder prüfen, musst du wohl in_array() auch 2x aufrufen.
 
schade naja ok, hoffe bloß das bremst bei 500 arrays nich zu sehr^^
danke
 
Zuletzt bearbeitet:
Goltergaul schrieb:
schade naja ok, hoffe bloß das bremst bei 500 arrays nich zu sehr^^
Klingt mir sehr nach schlechten Code.

Verrat uns halt mal, für was da ist und wie du es machst. Vielleicht findet sich eine effizientere Methode.
 
Goltergaul schrieb:
hier du kannst es dir gerne selbst ansehen. der code ist gehighlighted ;)
https://84.145.77.119/tiberianwars2/cronjobs/cron_radarmap.php
Du klatscht alles in ein Array, um es dann wieder zudurchsuchen ? :ugly:

Machs so:
PHP:
$bases=array();
$res=$db->query("SELECT x,y,arg FROM table");
while($row=$db->fetch_array($res))
  $bases[$row['x']][$row['y']]=$row['arg'];
$db->free_res($res);

for($y=0;$y<$maxy;$y++)
  for($x=0;$x<$maxx;$x++)
  {
    render_field($x,$y);
    if(isset($bases[$x][$y]))
      render_base($x,$y,$bases[$x][$y]);
  }
 
Goltergaul schrieb:
danke das ist in der tat schlauer :biggrin:
Wird bei einem belegten Feld das komplette Feld gezeichnet, kannst du dir sogar noch mehr Leistung sparen, indem dus so machst:
PHP:
if(isset($bases[$x][$y]))
  render_base_field($x,$y,$bases[$x][$y]);
else
  render_empty_field($x,$y);
 
jap das is klar ;)

ich überlege grade noch das gitter als hintergrundbild zu laden und dann die besonderheiten nurnoch "draufzuklecksen" Dann spar ich mir ~4000 schwarze rechtecke. Geht bloß ein wenig dynamik kaputt, ich müsste das hintergrundbild viel größer machen, so dass es auch bei größeren karten passt. Oder kann ich ein hintergrundbild irgendwie kacheln?
 
Naja, dann ist es ja fast noch einfacher. Die Kachelung kannste dann ja selbst machen. Sind halt nur immens viele imagecopyresampled()-Befehle. ;)
 
Goltergaul schrieb:
es geht nicht um html/css sondern GD2 ;)
Es wäre wohl ein (vielleicht besser: per Script) vorgefertigter Hintergrund besser.

Gegen eine CSS-Lösung spricht aber trotzdem nichts, wenn du deinen Code entsprechend änderst. Dem User isses ja wurscht, ob er alles auf dem Bild hat oder den Hintergrund im HTML-Code drinnenstehen hat. Oder willst du die Map als Ganzes zum Download anbieten ?
 
du meinst ich packe den hintergrund in eine tabelle(ebenfalls als hintergrund) oder per css wie auch immer und lege darüber dann die grafik, allerdings mit transparenten stellen? dann muss ich sie als gif speichern und den hintergrund per GD einfach nicht füllen oder?