php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.12.2009, 15:34  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard [Erledigt] Ausgabe zweier Arrays mit identischen Schlüsseln

Hallo Leute,

und zwar habe ich grad ein Problem, was mich etwas irre macht und wo ich sicher nur einen Denkfehler habe. Warum das auftritt weis ich, ich habe mich auch im Manual nun eine Stunde lang in den Array Funktionen durchgewühlt und was ich in Google für die Suche iengeben sollte wusste ich ehrlich gesagt nicht, darum habe ich auch nicht in Google gesucht.

Also ich habe folgende 2 Arrays.

PHP-Code:
<?php
  
/*
  *
  * preisarray mit leistung als schlüssel und dazu als wert der preis
  *
  */
  
$preis_arr = array(
       
'Innenreinigung' => $_SESSION['pr_ir'], 
       
'Innenreinigung-spezial' => $_SESSION['ir_sp_pr'], 
       
'Aussenreinigun-spezial' => $_SESSION['asr_sp_pr'], 
       
'Komplettreinigung innen und aussen' => $_SESSION['kplr_int_pr'], 
       
'Fussbodenwaesche' => $_SESSION['fbw_pr'], 
       
'Polsterwaesche' => $_SESSION['polsw_pr'], 
       
'Himmelwaesche' => $_SESSION['hw_pr'], 
       
'Kofferraumwaesche' => $_SESSION['kfrw_pr'], 
       
'Hochglnazmaschinen- versiegelung' => $_SESSION['sess_hgmvs'],
       
'Schleifpolitur' => $_SESSION['schlp_pr'], 
       
'Felgenreinigung' => $_SESSION['flg_pr'], 
       
'Scheibenreinigung innen' => $_SESSION['preis_schr_innen'], 
       
'Scheibenreinigung aussen' => $_SESSION['preis_schr_aussen'], 
       
'Frontscheibenversiegelung' => $_SESSION['fsvs_pr'], 
       
'Wintercheck' => $_SESSION['wch_pr'], 
       
'Reifenwechsel' => $_SESSION['rfw_pr'], 
       
'Bremsenwechsel' => $_SESSION['brw_pr'], 
       
'Auspuffservice' => $_SESSION['asps_pr'], 
       
'Dellenservice' => $_SESSION['dls_pr'], 
       
'Lackreparatur' => $_SESSION['lr_pr'], 
       
'Abhol-Bring-Service' => $_SESSION['km_pr'], 
       
'Leihwagen' => $_SESSION['lw_pr']
      );
   
  
/*
  *
  * arbeitszeitzeitarray mit leistung als schlüssel und dazu als wert der preis
  *
  */    
  
  
$time_arr = array(
       
'Innenreinigung' => $_SESSION['innen_re_zeit_ges'], 
       
'Innenreinigung-spezial' => $_SESSION['innen_re_spezial_zeit_ges'], 
       
'Aussenreinigun-spezial' => $_SESSION['aussen_re_spezial_zeit_ges'], 
       
'Komplettreinigung innen und aussen' => $_SESSION['komplett_intensiv_zeit_ges'], 
       
'Fussbodenwaesche' => $_SESSION['fbw_time_erg'], 
       
'Polsterwaesche' => $_SESSION['plosw_time_erg'], 
       
'Himmelwaesche' => $_SESSION['hw_zeit_ges'], 
       
'Kofferraumwaesche' => $_SESSION['kfw_zeit_ges'], 
       
'Hochglnazmaschinen- versiegelung' => $_SESSION['hgmvs_zeit_ges'], 
       
'Schleifpolitur' => $_SESSION['schp_zeit_ges'], 
       
'Felgenreinigung' => $_SESSION['fr_zeit_ges'], 
       
'Scheibenreinigung innen' => $_SESSION['schr_zeit_ges'], 
       
'Scheibenreinigung aussen' => $_SESSION['schr_zeit_ges'], 
       
'Frontscheibenversiegelung' => $_SESSION['fsvs_zeit_ges']
      );
  
?>
Alle Werte wie sie sollen stehen auch in den Arrays drin.

Wie ihr seht, haben die Arrays Schlüssel die direkt zueinander gehören, nur in einem Array stehen Zeit Werte in den Values und in dem anderen Array stehen Preis Values drin.

Nun soll eine Ausgabe so sein das die Leistung da steht in der Ausgabe und daneben aus dem Preis Array der Preis und neben dem Preis die Zeit in Stunden.

Nun habe ich das so versucht.

PHP-Code:
foreach($preis_arr as $preis_key => $preis_value){
   
   foreach(
$time_arr as $time_key => $time_value){
    
    
//nur ausgeben wenn value nicht leer
    
if($preis_value !=""){
     
     echo 
'<div class="form_left">';
      
      echo 
htmlspecialchars($preis_key);
      
     echo 
'</div>';
     
     echo 
'<div class="form_right">';
      
      echo 
htmlspecialchars($preis_value.' €');
      
      if(
$preis_key == $time_key){
       
       
$time_stunden $time_value 60;
       
       echo 
' / '.round($time_stunden,2).' Stunden';
      }
      
     echo 
'</div>';
     
     echo 
'<div class="form_end">';
     
     echo 
'</div>';
    }
   }
  } 
So ein Code Fehler oder besser gesagt PHP Fehler kommt nicht, aber die gewünschte Ausgabe kommt auch nicht. Sondern es werden einfach irre viele Auflistungen gemacht also ich dann eben 14 mal die gleiche Leistung da stehen mit 14 mal den gleichen Preis aber nur einmal die Zeit dazu.

Könnt ihr mir vieleicht einen Tipp geben wie ich das machen kann, das jeweils einmal die Leistung also der Schlüssel beider Arrays da steht und daneben eben Preis und Zeit.

Also so soll das aussehen.

Code:
Innenreinigung: 55 € / 3 Stunden
 
Aussenreinigung: 45 € / 2 Stunden
Und so weiter, halt was der Kunde dann da drin eingibt und auswählt.

Vielen Dank für eure Hilfe.

Falls Ihr mit der Problembeschreibung Schwierigkeiten habt, könnt ihr das ganze auch hier testen Kalender Auftrag , gabt da einfach Schrittweise was ein und dann seht ihr was mein Problem ist.

Mfg litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.12.2009, 15:38  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hi,

deine Verschachtelung ist falsch:
Code:
foreach($preis_arr as $preis_key => $preis_value){
   
   foreach($time_arr as $time_key => $time_value){
so bekommst du n * n Zeilen anstatt n (n = Anzahl der Elemente)!

Nutze ein mehrdimensionales Array:

Code:
$array = array('leistung' => array('preis' => 5, 'zeit' => 15), 
               'leistung2' => array('preis' => 58, 'zeit' => 2),
);
dann hast du solche Probleme nicht!
Asipak ist offline  
Alt 13.12.2009, 15:43  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Werde ich gleich mal probieren. Danke schon erst mal für den Tipp.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 13.12.2009, 18:32  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

So ich habe das nun mal so gemacht wie von Asipak geschrieben.

Das Array.

PHP-Code:
<?php
  
/*
  *
  * preis zeit leistungsarray array mit leistung als schlüssel und dazu als wert der preis
  *
  */
  
$pr_ti_lei_array = array(
 
        
'Innenreinigung' => array('preis' => $_SESSION['pr_ir'], 'zeit' => $_SESSION['innen_re_zeit_ges']),
 
        
'Innenreinigung-spezial' => array('preis' => $_SESSION['ir_sp_pr'], 'zeit' => $_SESSION['innen_re_spezial_zeit_ges']),
 
        
'Aussenreinigun-spezial' => array('preis' => $_SESSION['asr_sp_pr'],'zeit' => $_SESSION['aussen_re_spezial_zeit_ges']),
 
        
'Komplettreinigung innen und aussen' => array('preis' => $_SESSION['kplr_int_pr'], 'zeit' => $_SESSION['komplett_intensiv_zeit_ges']),
 
        
'Fussbodenwaesche' => array('preis' =>  $_SESSION['fbw_pr'], 'zeit' => $_SESSION['fbw_time_erg']),
 
        
'Polsterwaesche' => array('preis' => $_SESSION['polsw_pr'],'zeit' => $_SESSION['plosw_time_erg']),
 
        
'Himmelwaesche' => array('preis' => $_SESSION['hw_pr'],'zeit' => $_SESSION['hw_zeit_ges']),
 
        
'Kofferraumwaesche' => array('preis' => $_SESSION['kfrw_pr'],'zeit' => $_SESSION['kfw_zeit_ges']),
 
        
'Hochglnazmaschinen- versiegelung' => array('preis' => $_SESSION['sess_hgmvs'], 'zeit' => $_SESSION['hgmvs_zeit_ges']),
 
        
'Schleifpolitur' => array('preis' => $_SESSION['schlp_pr'],'zeit' => $_SESSION['schp_zeit_ges']),
 
        
'Felgenreinigung' => array('preis' => $_SESSION['flg_pr'],'zeit' => $_SESSION['fr_zeit_ges']),
 
        
'Scheibenreinigung innen' => array('preis' => $_SESSION['preis_schr_innen'],'zeit' => $_SESSION['schr_zeit_ges']),
 
        
'Scheibenreinigung aussen' => array('preis' => $_SESSION['preis_schr_aussen'],'zeit' => $_SESSION['schr_zeit_ges']),
 
        
'Frontscheibenversiegelung' => array('preis' => $_SESSION['fsvs_pr'],'zeit' => $_SESSION['fsvs_zeit_ges']),
 
        
'Wintercheck' => array('preis' => $_SESSION['wch_pr'],'zeit' => '0'),
 
        
'Reifenwechsel' => array('preis' => $_SESSION['rfw_pr'],'zeit' => '0'),
 
        
'Bremsenwechsel' => array('preis' => $_SESSION['brw_pr'],'zeit' => '0'),
 
        
'Auspuffservice' => array('preis' => $_SESSION['asps_pr'],'zeit' => '0'),
 
        
'Dellenservice' => array('preis' => $_SESSION['dls_pr'],'zeit' => '0'),
 
        
'Lackreparatur' => array('preis' => $_SESSION['lr_pr'],'zeit' => '0'),
 
        
'Abhol-Bring-Service' => array('preis' => $_SESSION['km_pr'],'zeit' => '0'),
 
        
'Leihwagen' => array('preis' => $_SESSION['lw_pr'],'zeit' => '0')
 
        );
?>
Hier der Test mit print_r.

Code:
Array(    [Innenreinigung] => Array        (            [preis] => 20            [zeit] => 15        )    [Innenreinigung-spezial] => Array        (            [preis] => 40            [zeit] => 45        )    [Aussenreinigun-spezial] => Array        (            [preis] => 40            [zeit] => 45        )    [Komplettreinigung innen und aussen] => Array        (            [preis] => 300            [zeit] => 240        )    [Fussbodenwaesche] => Array        (            [preis] => 50            [zeit] => 50        )    [Polsterwaesche] => Array        (            [preis] => 0            [zeit] => 0        )    [Himmelwaesche] => Array        (            [preis] => 50            [zeit] => 20        )    [Kofferraumwaesche] => Array        (            [preis] => 25            [zeit] => 10        )    [Hochglnazmaschinen- versiegelung] => Array        (            [preis] => 65            [zeit] => 45        )    [Schleifpolitur] => Array        (            [preis] => 155            [zeit] => 150        )    [Felgenreinigung] => Array        (            [preis] =>            [zeit] => 20        )    [Scheibenreinigung innen] => Array        (            [preis] => 0            [zeit] => 20        )    [Scheibenreinigung aussen] => Array        (            [preis] => 12,5            [zeit] => 20        )    [Frontscheibenversiegelung] => Array        (            [preis] => 35            [zeit] => 15        )    [Wintercheck] => Array        (            [preis] => 25            [zeit] => 0        )    [Reifenwechsel] => Array        (            [preis] => 25            [zeit] => 0        )    [Bremsenwechsel] => Array        (            [preis] => 100            [zeit] => 0        )    [Auspuffservice] => Array        (            [preis] => 70[zeit] => 0        )    [Dellenservice] => Array        (            [preis] => 80            [zeit] => 0)    [Lackreparatur] => Array        (            [preis] => 150            [zeit] => 0        )    [Abhol-Bring-Service] => Array(            [preis] => 25            [zeit] => 0        )    [Leihwagen] => Array        (            [preis] => 30            [zeit] => 0        )) 
So und die Ausgabe da schicke ich ein Bild als Anhang mal mit, da könnt ihr euch ein Bild machen. Das was da passiert kann ich überhaupt nicht nachvollziehen.

Anstatt da Werte stehen, kommen Anfangsbuchstaben den Array Keys, das ist mir unerklärlich.

Vieleicht wisst ihr was da vor sich geht. Danke für eure Hilfe mfg litter
Miniaturansicht angehängter Grafiken
erledigt-ausgabe-zweier-arrays-mit-identischen-schluesseln-array_ausgabe.jpg  
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de

Geändert von litterauspirna (13.12.2009 um 18:36 Uhr).
litterauspirna ist offline  
Alt 13.12.2009, 18:59  
stebi
Gast
 
Beiträge: n/a
Standard

PHP-Code:
foreach($pr_ti_lei_array as $leistung => $pr_ti_values)
{
 
$zeit $pr_ti_values['zeit'];
 
$preis $pr_ti_values['preis'];
            
 echo 
'Leistung :'.$leistung.' Zeit: '.$zeit.' Preis: '.$preis.'<br>';

Warum legst du nicht gleich die benötigte Array-Struktur in der Session ab?
 
Alt 13.12.2009, 19:03  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Ich habe es zwar nun auf eine andere Weise gelöst, aber deine Idee klingt wahrlich auch gut, werde ich mal so probieren.

Hier der Lösungscode der funktioniert.

PHP-Code:
<?php
foreach($pr_ti_lei_array as $key => $value){
   
   echo 
'<div class="form_left">';
      
     echo 
htmlspecialchars($key);
      
   echo 
'</div>';
     
   echo 
'<div class="form_right">';
     
     echo 
htmlspecialchars($pr_ti_lei_array[$key][preis]).' €';
     
     if(
$pr_ti_lei_array[$key][zeit] != 0){
      
      echo 
' / '.htmlspecialchars($pr_ti_lei_array[$key][zeit]).' Minuten';
     } 
      
   echo 
'</div>';
    
   echo 
'<div class="form_end">';
     
   echo 
'</div>';
  }
?>
Danke für die Hilfe mfg litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 13.12.2009, 20:35  
Erfahrener Benutzer
 
Benutzerbild von jw-lighting
 
Registriert seit: 25.03.2009
Beiträge: 126
PHP-Kenntnisse:
Fortgeschritten
jw-lighting befindet sich auf einem aufstrebenden Ast
jw-lighting eine Nachricht über ICQ schicken
Standard

Hast du eine Konstante names 'zeit' und eine namens 'preis', die die Arryschlüssel enthalten? vermutlich nicht. dann schreibe es doch bitte so:

PHP-Code:
<?php
foreach($pr_ti_lei_array as $key => $value){
   
   echo 
'<div class="form_left">';
      
     echo 
htmlspecialchars($key);
      
   echo 
'</div>';
     
   echo 
'<div class="form_right">';
     
     echo 
htmlspecialchars($pr_ti_lei_array[$key]['preis']).' €';
     
     if(
$pr_ti_lei_array[$key]['zeit'] != 0){
      
      echo 
' / '.htmlspecialchars($pr_ti_lei_array[$key]['zeit']).' Minuten';
     } 
      
   echo 
'</div>';
    
   echo 
'<div class="form_end">';
     
   echo 
'</div>';
  }
?>
__________________
jw-lighting 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
Verknüpfung zweier Tabellen zur Ausgabe klappt nicht Lesnivila PHP Tipps 2009 40 13.03.2009 13:20
Probleme mit ausgabe von arrays im Echo. scooter PHP Tipps 2006 11 15.01.2006 14:52
[SMARTY] Ausgabe eines assoziativen Arrays imported_Ben PHP Tipps 2005 2 29.04.2005 11:46
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array mit identischen key, foreach ausgabe neben

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