Portal > Foren > PHP > PHP-Programmierung > If-Abfrage mit array
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 17.02.2006, 04:30 Nach oben    #1
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 78
Standard If-Abfrage mit array

Hi,
Habe mal wieder ein Problem

Also, ich habe eine karte erstellt mit 10*10 feldern. Jetzt habe einen array mit gebauden und den koordinaten. Also so sieht der array aus.

$haus['x']['1'] = 5;
$haus['y]['1'] = 6;

Das haus haette jetzt die x-koordinate 5 und die y-koordinate 6.

Jetzt habe ich da 2 for-schleifen fuer die ausgabe. Also jede for-schleife laeuft 10 mal.

Und in der for-schleife habe ich dann auch die uberpruefung ob es ein restaurant ist oder ein normales haus:

PHP-Code:
if(in_array($j,$restaurant['x']) && in_array($i,$restaurant['y'])) {
    
$res array_keys($restaurant['x'],$j);    
}else{
    
$value '<img src="./images/ingame/haus.gif" border="0">';

jetzt funktioniert der code aber nicht, weil da ja die koordinaten von 2 verschiedenen hausern genommen werden koennen.
Also wenn man 2 haeuser hat mit den kordinaten (2,3) und (4,5) dann wuerde diese if-abfrage aber ja noch die moeglichkeiten (2,5) usw. annehmen.
Wie kann ich das also verhindern, so dass nur die koordinaten (2,3) usw. angenommen werden?

habt ihr eine idee?
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2006, 07:02 Nach oben    #2
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 459
Standard

Es ist wohl besser, wenn du mit einer foreach-Schleife arbeitest.
www.php.net/foreach
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2006, 10:09 Nach oben    #3
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

Ich würd das Array anders aufbauen:
$haus[$x][$y] = $id
die $id hat ne Nummer, anhand du dein Gebäude identifizieren kannst. hast du 5 verschiedene Gebäude, brauchst du halt 5 verschiedene IDs.
dann in deinen beiden schleifen die $x und $y durchlaufen lassen und dann die $id auswerten, fertig.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2006, 10:15 Nach oben    #4
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

warum hat das haus denn nicht einfach dieses array:

$haus['x'] = 5;
$haus['y] = 6;


wozu das unterarray [1] ? das haus kann doch nur eine x und eine y koordinate haben oder?

aber ich seh grad das da einer schneller war
__________________
Wer später bremst, fährt länger schnell...
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.02.2006, 02:38 Nach oben    #5
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 78
Standard

ok, danke fuer eure hilfe. Habe es jetzt so gemacht, wie WarrenFaith gesagt hat
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.02.2006, 19:00 Nach oben    #6
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 78
Standard

grrrr....
habe noch ein problem damit.
Also ich habe jetzt die folgende if-abfrage:
PHP-Code:
if(isset($restaurant[$j][$i])) {
  
$res_id=$restaurant[$j][$i];
  eval(
"\$value .=\"".gettemplate("templates/$template_folder/karte_value_restaurant")."\";");
 }elseif(isset(
$bank[$j][$i])) {
  
$karten_id=$karten_data['kartenid'];
  eval(
"\$value .=\"".gettemplate("templates/$template_folder/karte_value_bank")."\";");
 }elseif(
in_array($i,$strasse['y'])  || in_array($j,$strasse['x']) ) {
  eval(
"\$value .=\"".gettemplate("templates/$template_folder/karte_value_strasse")."\";");
 }else{
               eval(
"\$value .=\"".gettemplate("templates/$template_folder/karte_value_haus")."\";");
 } 
Ok, wenn ich jetzt eine 10*10 Karte habe, funktioniert alles einwandfrei, alles wird angezeigt.
Wenn ich jetzt aber auf 20*20 gehe, funktioniert es nicht mehr...es wird alles angezeigt ausser die strassen die vertical gehen, also die y-strassen.
Sie werden einfach nicht angezeigt.
Z.b. ist die eine strasse $strasse['y]['3'] = 3.
Und dann habe ich alle $i werte ausgeben lassen und da ist auch 3 dabei, aber es wird nicht angezeigt. Warum??
Bei 10*10 funktionert es....
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2006, 17:54 Nach oben    #7
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

wuah ich versteh überhaupt nicht was dein ziel ist. kann es sein, dass das alles extrem unübersichtlich ist?
schon allein deine templateeinbindung ist sehr komisch.
also vielleicht solltest du dein system nochmal überdenken, denn scheinbar hast du meinen vorschlag doch nicht übernommen.
du solltest deine Arrays ja nicht nach gebäudetypen benennen sondern einfach nur ein array machen mit x mal y feldern und dann dort jeweils eine ID eintragen, anhand du das dort stehende gebäude identifizieren kannst.
sprich:
PHP-Code:
<?
$karte['x']['y'] == 0 // leeres Grundstück
$karte['x']['y'] == 1 // Restaurant
$karte['x']['y'] == 2 // Hotel
$karte['x']['y'] == 3 // Bank
// etc
?>
Und dann kannst du wunderbar eine switch-Anweisung verwenden, anhand der du dann schnell anhand der Nummer eine Fallunterscheidung durchführen kannst.
PHP-Code:
<?
switch($karte['x']['y']) {
    case '1': // todo
    case '2': // todo
    default: //todo
}?>
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zend Framework - Probleme mit Zend_Controller_RewriteRouter bzw. Form der URLs Ben PEAR, PECL und Frameworks 12 24.12.2006 17:17
Suche Hilfe: Angebot und Nachfrage berechnen ljungi Plauderecke 6 17.12.2006 22:10
Array in Bezug auf ein anderes sortieren... code5 PHP-Programmierung 2 15.05.2006 15:56
Ein Array in ein Array schreiben bacarni PHP-Programmierung 2 07.02.2006 14:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45