Koordinatensystem und Auswahl



  • Hallo,
    mir wurde hier schon in C++ kompetent weitergeholfen, also probiere ich es doch auch mal mit PHP. 🙂

    Ich erstelle mit folgendem Programmcode ein Koordinatensystem mit der Definition [0 < x < 36; 0 < y < 36] inkl. Ausgabe aller Koordinaten (-> nur zum Test!), was soweit auch problemlos klappte:

    echo('<table');
    for($y=35;$y >= 0;$y--) {
    	echo("\n".' <tr>');
    	for($x=0;$x <= 35;$x++) {
    		echo('  <td>('.$x.'|'.$y.')</td>');
    	 }
    	echo(' </tr>');
     }
    echo('</table>');
    

    (sämtl. designspezifische Angaben habe ich für das Beispiel entfernt)

    Nun möchte ich beispielsweise die Koordinaten (12|22) u. (15|17) speziell einfärben/hevorheben. Dies "hart" zu kodieren wäre natürlich kein Problem, jedoch stammen diese Werte aus einer Belegungstabelle der Datenbank.

    Ich habe also z. B. die folgenden ARRAYs ...

    $rry_x = array(12,15);
    $rry_y = array(22,17);
    

    ... und versuche mit folgendem Code ein Paar einzufärben:

    [...]
      echo('  <td'.((in_array($x,$rry_x) && in_array($y,$rry_y)) ? ('style="background-color: #ff0000;"') : ('')).'>('.$x.'|'.$y.')</td>');
    [...]
    

    Ihr erkennt die Problematik sicher: Es werden alle entsprechenden Felder eingefärbt, anstatt wirkl. nur dieses Paar. Ich muss also auf Element1 des x-Array und Element1 des y-Arrays usw. zugleich testen, anstatt nur, ob es überhaupt vorkommt.

    Ich weiß leider selbst nach längerem Überlegen nicht, wie ich das anstellen soll – freue mich über jeden noch so kleinen Denkansatz. 😞

    Hilft es vielleicht irgendwie eine Kombination (rry=array(rry = array(rry_x,$rry_y)) zu erstellen? Aber auch das bringt mich irgendwie nicht weiter, ich bin gerade mit meinem "Latein" am Ende.

    Vielen Dank schonmal im Voraus und einen schönen Tag wünsche ich.



  • Sorry für den zweiten Beitrag sogleich.

    x- und y-Achsen beginnen natürl. bereits bei 0, was aber mit dem Problem nichts zu tun hat ... wollte es nur kurz nachtragen.

    Sorry und danke nochmal im Voraus für alle Antworten.



  • also du kannst eben entweder vorher in einer Schleife die Arrays durchgehen und dir ein neues Array mit den Paaren erzeugen:

    // hier mal der manuelle Ansatz
    $fields[] = array($rry_x[0],$rry_y[0]);
    $fields[] = array($rry_x[1],$rry_y[1]);
    

    dann kannst du dir nachher ein Array zusammensetzen und danach in $fields suchen...

    Du kannst aber natürlich auch in deiner Schleife jedes Mal das Array durchgehen...

    Oder am besten du schaust, dass du deine Elemente in den beiden Arrays schon so sortiert bekommst, dass sie erst nach aufsteigenden y und dann (innerhalb eines y-Wertes) nach x sortiert sind. Dann musst du nämlcih jedes Mal einfach nur ein Element überprüfen und wenn es existierte einen Zähler hochsezten, damit dann beim nächsten Durchlauf das nächste Feld überprüft wird...


Anmelden zum Antworten