php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.12.2005, 12:19  
Gast
 
Beiträge: n/a
Standard Schleife nur 1x durchlaufen

Hallo zusammen!

Ich bin noch nicht so "bewandert" in PHP und habe daher (vermutlich eine Anfänger-)Frage:

Wie kann man festlegen, dass eine Schleife nur 1x durchgelaufen wird?

Es geht konkret um Überschriftsfelder, die mehrmals in einem vorkommen, aber nur 1x ausgegeben werden.
Ich hab es zuerst mal "auf die harte Tour" mal mit break; vesucht, dann wird zwar die Schleife nur 1x durchgegangen und ich hab die Werte nur 1x aber es werden auch 5 Nullen angezeigt (es gäbe nämlich noch 5 weitere Durchläufe)

Wie kann ich das (mit möglichst wenig Aufwand) ändern?

Thx für jede Hilfe!
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 16.12.2005, 12:21  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

1. welche art von Schlaufe?
2. verstehe die Frage nicht wirklich
3. Kontroll-Strukturen
__________________
Wie man Fragen richtig stellt
dsmcg ist offline  
Alt 16.12.2005, 12:28  
Gast
 
Beiträge: n/a
Standard

Es handelt sich um 2 verschachtelte foreach-Schleifen:
PHP-Code:
<?
foreach(array_keys($aFields["M"]) as $bigKey)
{
    echo 
"   <tr>\n";
    
$next "    <th></th>\n";
    foreach(
$aFields["M"][$bigKey] as $key=>$value)
    {
        echo 
$next;
        echo 
"    <th>$key</th>\n";
        
$next += "    <th></th>\n";
    }
    echo 
"   </tr>\n";
        break;
}
?>
--> ich bekomm auf die Art immer Nuller (für jeden Nicht-Durchlauf eine)
--> wie kann ich auf anderem Wege erreichen, dass diese Schleife nur 1x durchläuft?
 
Alt 16.12.2005, 12:31  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Ich verstehe deine Frage nicht. Wofür benutzt du eine Schleife, wenn die Anweisung nur ein Mal ausgeführt werden soll? Wie genau ist das Array aufgebaut? Wie soll die Ausgabe aussehen?
xabbuh ist offline  
Alt 16.12.2005, 12:55  
Gast
 
Beiträge: n/a
Standard

Dass Array besteht aus einem weiteren Array, dass aus Werten besteht.
Zuerst brauche ich die Überschriften -> deswegen nur 1x
Danach ruf ich die Schleife nochmal auf, gebe aber dann nur die Werte aus.
Ist vermutlich unnötig kompliziert...

Die Ausgabe soll so aussehen:
Position Feld 1 - Feld 2 - Feld 3
1 Wert 1 - Wert 2 - Wert 3
2 Wert 1 - Wert 2 - Wert 3
3 Wert 1 - Wert 2 - Wert 3
4 Wert 1 - Wert 2 - Wert 3

Die Werte hole ich mir so:
PHP-Code:
<?
// Daten ausgeben
/* +++ $bigKey = 1.Schlüssel +++ */
foreach(array_keys($aFields["M"]) as $bigKey)
{
    
/* +++ $key = 2.Schlüssel +++ */
    
$zeile_a "   <tr>\n";
    
$zeile_e "   </tr>\n";
    
$pos "    <th>Pos. $bigKey</th>\n";
    foreach(
$aFields["M"][$bigKey] as $key=>$value)
    {
        
/* +++ es werden nur ausgefüllte Felder angezeigt +++ */
        
if ($value != " ")
        {
            
$next "";
            echo 
$zeile_a;
            echo 
$pos;
            echo 
$next;
            echo 
"    <td>$value</td>\n";
            
$next += "    <th></th>\n";
            
$pos "";
            
$zeile_a "";
        }
    }
    echo 
$zeile_e;
    break;
}
?>
Aber ich brauch ja auch die Überschriftsfelder ...
Kann ich das auch da einbauen, ohne die Schleife vorher extra aufzurufen?
Wenn ja, WIE?
 
Alt 16.12.2005, 13:17  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Code:
<?php
$i 
0;
foreach (
$array as $value) {
  if (
$i == 0) {
    
// Spaltennamen ausgeben
    
printf('<tr><td>%s</td></tr>'implode('</td><td>'array_keys($array)));
    
$i 1;
  }
  
// Spaltenwerte ausgeben
}
?>
Andererseits kenne ich die Spaltennamen meistens und schreib sie deshalb statisch über die Schleife.
Zergling-new ist offline  
Alt 16.12.2005, 13:28  
Gast
 
Beiträge: n/a
Standard

Danke!

Die Spaltennamen können sich ändern, da das Script auf mehrere Formulare zufreift.

Hm, an sowas hab ich auch schon gedacht, aber genau da liegt ja das Problem:
Wie gebe ich da jetzt alle Spaltennamen aus?
Bei jedem Durchlauf bekomm ich ja nur jeweils 1.

Also wahrscheinlich lacht ihr ech schon halbtod darüber, wie man einerseits solche komplizerten Schleifen hinbekommt, aber nicht weiß wie man die Daten richtig ausgibt, aber ich muss trotzdem fragen:
Wie bekomm ich die Spaltenüberschriften in eine Zeile?
 
Alt 16.12.2005, 13:33  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

der Schippsel von Zergling zeigt es dir doch...
__________________
Wie man Fragen richtig stellt
dsmcg ist offline  
Alt 16.12.2005, 13:34  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Habs grad erweitert um implode() + array_keys().
Zergling-new ist offline  
Alt 16.12.2005, 13:44  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

PHP-Code:
<?php

$aHeaders 
= array('Ziffer''Buchstabe''Roemisch');
$aData = array(
    array(
1'a''I'),
    array(
2'b''II'),
    array(
3'c''III'),
    array(
4'd''IV')
);

echo 
"<table>\n\t<tr>\n";

// print table headers
foreach ($aHeaders as $sHeader)
    
printf ("\t\t<th>%s</th>\n"htmlentities((string)$sHeader));
echo 
"\t</tr>\n";

// print contents
foreach ($aData as $aRow) {
    echo 
"\t<tr>\n";
    foreach (
$aRow as $mValue)
        
printf ("\t\t<td>%s</td>\n"htmlentities((string)$mValue));
    echo 
"\t</tr>\n";
}
echo 
"</table>\n";
?>
Ist natürlich eben eine Frage der Array-Struktur. Du könntest auch
$aHeaders und $aData wiederm in ein Array setzen oder eben, wie
hiervorgeschlagen, die Überschriften einfach quasi als erste Zeile in das
Datenarray aufnehmen.

Basti
Basti ist offline  
 


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
Schleife nach Tastendruck beenden schnurzli PHP Tipps 2006 7 24.03.2006 18:56
Warum wird die erste Schleife nur einmal durchlaufen ? PHP Tipps 2006 12 03.03.2006 20:04
array als Schleife verwenden cyberholic Datenbanken 6 12.01.2006 13:14
Formularwerte in Schleife überprüfen PHP Tipps 2007 6 23.11.2005 14:31
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
for Schleife -> unterbrechen, Befehl einfügen, fortsetzen PHP Tipps 2005-2 7 10.10.2005 21:05
while Schleife nur 5 mal durchlaufen lassen MatthiasNI PHP Tipps 2005-2 5 30.07.2005 11:21
while schleife in einer while schleife beim tmpl-sys PHP Tipps 2005-2 0 27.07.2005 15:07
While Schleife Beatbox Off-Topic Diskussionen 8 19.05.2005 21:55
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
Variabel aus while schleife ausserhalb der schleife nutzen PHP Tipps 2005 8 12.02.2005 18:04
Problem mit ner schleife PHP Tipps 2004-2 3 24.11.2004 10:50
versteh diese do-while schleife nicht PHP Tipps 2004 5 08.09.2004 16:54
Die Schleife läuft eine Ehrenrunde zu viel bei feof() PHP Tipps 2004 1 13.06.2004 18:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php foreach nur einmal durchlaufen, while schleife 1x durchlaufen lassen, php schleife einmal durchlaufen, php foreach nur 1 mal durchlaufen, foreach nur 1x, php schleife nur einmal durchlaufen, foreach nur einmal durchlaufen, php foreach soll nur 1 mal, php foreach 5 mal durchlaufen, php while läuft einen zuviel, while schleife nur 9 mal durchlaufen, php for drei durchläufe, schleife einmal durchlaufen php

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:29 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.