php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.03.2011, 06:05  
Benutzer
 
Registriert seit: 06.01.2009
Beiträge: 55
peroja befindet sich auf einem aufstrebenden Ast
Standard foreach array klemmt

hallo.
wahrscheinlich hab ich nur was uebersehen aber dies offenbar schon seit 2 stunden.

ich baue eine tabelle mit 20x20 feldern auf und berechne darin ob x und y einen wert drinn hat oder nicht.

hier der code

PHP-Code:
<?
$x
=array("4","9","5");
foreach (
$x as $feld_x)
echo 
$feld_x.", ";
echo 
"<br>";

$y=array("5","19","15");
foreach (
$y as $feld_y)
echo 
$feld_y.", ";
?>

<table border=1>
<?
$i
=1;
while(
$i<=20)
  {
echo 
"<tr>";
$a=1;
while(
$a<=20)
  {
// soll ich die foreach hier reintun? hab ich versucht. bringt nix
if ($feld_x==$a and $feld_y==$i)
{
echo 
"<td bgcolor=blue>1";
}
else
{
echo 
"<td bgcolor=red>0";
}
$a++;
}
echo 
"</td> ";
$i++;
echo 
"</tr>";
}

?>
</table>
das ding funktioniert nur halbwegs. irgendwie zeigt mir das ding nur die letzten werte in dem array an? ich hab schon versucht die foreach schlaufe in zeile 14 einzusetzen aber ohne erfolg. vielleicht hat jemand die loesung parat? mein hirn raucht und ich mag nicht mehr weiter zu suchen woran es liegt.

lieben dank

Geändert von peroja (31.03.2011 um 06:39 Uhr).
peroja ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.03.2011, 07:14  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.870
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Du missverstehst da was ganz gewaltig in sachen Foreach. Nundenn:

PHP-Code:
// dimensionate "selected" and max fields Fields:
$horizontal = array( 4,9,); // integers!
$vertical = array( 5,19,15 ); // integers again!
$horizontal_max range(1,20);
$vertical_max range(1,20);

$output[] = '<table border="1">';

// okay, lets do this job absolute "logical"
// add lines to the output for EACH element of
// $horizontal_max AND $vertical_max and set the
// background color correspondending to their
// "selected" field pendants.

// here we go:

foreach ( $vertical_max as $current_vertical ) {

   
$output[] = '<tr>';

   foreach ( 
$horizontal_max as $current_horizontal ) {

      if ( 
in_array($current_horizontal$horizontal) &&
           
in_array($current_vertical$vertical) ) {

         
$output[] = '<td bgcolor="blue">1</td>';

      }
      else {

         
$output[] = '<td bgcolor="red">0</td>';

      }

   }

   
$output[] ='</tr>';

}

// finally, close table and throw it to the client;

$output[] = '</table>';

echo 
join("\n"$output); 
Code:
foreach ( an Array Expression AS [ $array_key => ] $value ) {
   /* ... do this ... */

   continue; <- skip key
   break; <- stopping foreach
}
Lesestoff:
- http://php.net/manual/de/function.range.php
- http://de.php.net/manual/de/control-...es.foreach.php
- http://de.php.net/manual/de/function.in-array.php
- http://de.php.net/manual/de/function.join.php

Hinweis zur "Logik" deiner und meiner "Koordinaten"-Arrays:
Stelle sicher das du wirklich die Koordinaten-Abstraktion so willst. Denn:
PHP-Code:
$horizontal = array( 4,9,); // integers!
$vertical = array( 5,19,15 ); // integers again! 
besagt das du folgende Koordinaten in dem Table "selektierst":
Code:
[ horizontal , vertical ]

[ 4 , 5 ]
[ 4 , 15 ]
[ 4 , 19 ]
[ 5 , 5 ]
[ 5 , 15 ]
[ 5 , 19 ]
[ 9 , 5 ]
[ 9, 15 ]
[ 9, 19 ]
Wenn du allerdings nur 3 Felder selektieren willst solltest du das Array der Logik halber anders aufbauen, auch wenn 2 getrennte Arrays das selbe meinen könnten ( x wie y repräsentieren ), verliert sich in der Übersicht die Zusammengehörigkeit der jeweiligen Koordinaten:
PHP-Code:
$coords = array( => 5=> 15=> 19 ); 
Code:
[ horizontal (INDEX), vertical (VALUE) ]

[ 4 , 5 ]
[ 5 , 15 ]
[ 9, 19 ]
und die if abfrage angleichen, aus:
PHP-Code:
if ( 
   
in_array($current_horizontal$horizontal) &&
   
in_array($current_vertical$vertical
/* ... */ 
würde dann:
PHP-Code:
if (
   isset(
$coords[$current_horizontal]) && // prevents "illegal offset errors"
   
$coords[$current_horizontal] == $current_vertical // checks its presence
/* ... */ 
Was ja nicht gerade unwichtig ist zu wissen, da du mit 2 Arrays 9 Felder selektierst und mit einem Array mit Index / Value - Wertepaare lediglich 3 Felder.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (31.03.2011 um 07:59 Uhr).
tr0y ist gerade online   Mit Zitat antworten
Alt 31.03.2011, 14:55  
Benutzer
 
Registriert seit: 06.01.2009
Beiträge: 55
peroja befindet sich auf einem aufstrebenden Ast
Standard

ja logisch!!! jetzt im nachhinein ...klar, es sind ja zwei integer. oh mann, so haette ich noch lange weitermachen koennen. das haet nie funktioniert. lieben dank!!! super! hast mir grad einen tollen tag beschert...
peroja ist offline   Mit Zitat antworten
Alt 31.03.2011, 15:08  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.870
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von peroja Beitrag anzeigen
ja logisch!!! jetzt im nachhinein ...klar, es sind ja zwei integer. oh mann, so haette ich noch lange weitermachen koennen. das haet nie funktioniert. lieben dank!!! super! hast mir grad einen tollen tag beschert...
Ja gerne doch
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 31.03.2011, 15:22  
Benutzer
 
Registriert seit: 06.01.2009
Beiträge: 55
peroja befindet sich auf einem aufstrebenden Ast
Standard

du tr0y nochmal eine kleine frage. die erste version geht ja prima aber eben es zeigt mir zuviele felder an wie du erwaehnt hast und dann hab ich ab dem zeitpunkt hier

--> Wenn du allerdings nur 3 Felder selektieren willst

versucht und irgendwie geht das nicht? er zeigt mir nur 5x5 felder an und 1 rotes?
und zwischendurch leere zeilen?

wahrscheinlich hab ich dein codeschnipsel falsch interpretiert?
wie wuerde der richtige aufbau denn aussehen? total 20x20 felder und diese 3 roten felder besetzt?

ich wuerd gerne mal deinen code mit meinem vergleichen dann sehe ich wo ich den fehler gemacht habe? ich hab immerhin keine fehlermeldung....aber eben...

lieben dank
peroja ist offline   Mit Zitat antworten
Alt 31.03.2011, 15:47  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.870
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

PHP-Code:
// dimensionate "selected" and max fields Fields:
$horizontal_max range(1,20);
$vertical_max range(1,20);

// alterable values:
$coords = array( => 5=> 15=> 19 ); // horizontal => Vertical

$output[] = '<table border="1">';

// here we go:

foreach ( $vertical_max as $current_vertical ) {

   
$output[] = '<tr>';

   foreach ( 
$horizontal_max as $current_horizontal ) {

      if ( isset(
$coords[$current_horizontal]) &&
           
$coords[$current_horizontal] == $current_vertical ) {

         
$output[] = '<td bgcolor="blue">1</td>';

      }
      else {

         
$output[] = '<td bgcolor="red">0</td>';

      }

   }

   
$output[] ='</tr>';

}

// finally, close table and throw it to the client;

$output[] = '</table>'
so sieht der "umgebaute" Code aus.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 31.03.2011, 16:50  
Benutzer
 
Registriert seit: 06.01.2009
Beiträge: 55
peroja befindet sich auf einem aufstrebenden Ast
Standard

da kommt bei mir nur eine weisse seite? alles leer?
peroja ist offline   Mit Zitat antworten
Alt 31.03.2011, 16:53  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Dann stelle dein error_reporting vernünftig ein.
Vorzugsweise in der PHP-Konfiguration und nicht erst im Script, da ist es bei fatal errors nämlich zu spät.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 31.03.2011, 17:23  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Der "umgebaute" Code macht keine Ausgabe, sondern sammelt nur Daten in einem Array...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 31.03.2011, 17:29  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.870
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Verrat ihm doch nicht alles, ich denk er kann Programmieren ?
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array aus SQL Abfrage zusammenbauen um es rekursiv abzuarbeiten litterauspirna PHP Einsteiger 7 01.02.2011 18:44
Mehrdimens. Array per FOREACH abfragen Crimson007 PHP Einsteiger 14 24.01.2011 00:54
Array werte zusammen rechnen fabi288 PHP Einsteiger 13 03.01.2011 16:08
mehrdimensionales array inhalte tauschen pidaman PHP Tipps 2010 18 27.08.2010 16:58
[Erledigt] Problem bei update mit array feldern fulltilt PHP Tipps 2010 6 13.02.2010 00:59
PHPLot von der Datenbank zum mehrdimensionalen Array mannimammut PHP Tipps 2009 1 15.12.2009 10:40
[Erledigt] Mehrdimensionales Array als verschachtelte Liste ausgeben mit foreach kristina PHP Tipps 2009 5 26.08.2009 14:27
merge Array? tommy_725 PHP Tipps 2009 3 07.08.2009 18:30
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php eindimensionales array ausgabe horizontal

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum