php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.12.2008, 14:07  
Neuer Benutzer
 
Registriert seit: 31.12.2008
Beiträge: 2
kai.kobold befindet sich auf einem aufstrebenden Ast
Standard Array mit verschachtelten inneren Array auslesen und leere Felder rausschmeißen

Hallo, ich habe ein riesen Problem, bei dem ich überhaupt nicht weiter komme. Hauptproblem ist wahrscheinlich, dass ich relativ neu in PHP bin und bestimmt Konzepte noch nicht verstehe.
Ich versuche gerade ein php-Skript für meine Webseite anzupassen.
Hauptproblem bei dem Mail-Skript ist, dass dort auch leere Felder per Mail versendet werden.
Das Formular ist mit verschachtelten Arrays aufgebaut. Also ein Array kann ein Array enthalten, dieses wiederum auch, ... usw.
Nun möchte ich per Mail ein bestimmtes Array verschicken, auf das ich auch zugreifen kann
$form_values['submitted_tree']

Dieses kann ich nun nach leeren Feldern durchsuchen und rausnehemn:

PHP-Code:
foreach ($form_values['submitted_tree'] as $key => $value) {
    if (
$value == '') {
               unset(
$form_values['submitted_tree'][$key]);
    }
}
print 
theme('webform_mail_fields'0$form_values['submitted_tree'], $node);
?> 
Nun ist aber die Ausgabe von $value auch manchmal ein neues Array also
is_array($value) ist wahr.
Nun habe ich aber keinen Plan, wie ich dieses neue Unterarray anspreche und auch dort nach leeren Feldern suche.
Ich habe es folgendermaßen probiert, was aber überhaupt keine Änderung bring.

PHP-Code:
foreach ($form_values['submitted_tree'] as $key => $value) {
    if (
$value == '') {
               unset(
$form_values['submitted_tree'][$key]);
    }
    if( 
is_array($value) ) {
        foreach (
$form_values['submitted_tree'][$key] as $key2 => $value2) {
             if (
$value2 == '') {
                    unset(
$form_values['submitted_tree'][$key][$key2]);
             }
         }
    }
}
print 
theme('webform_mail_fields'0$form_values['submitted_tree'], $node);
?> 
Wie gesagt, habe ich zwischen Funktion 1 und 2 keinerlei Änderung in der resultierenden E-Mail. Wahrscheinlich mache ich hier was grundsätzlich falsch. Könnt ihr mir helfen? Bin schon seid Tagen dabei mir über das Internet ne Lösungsmöglichkeit zu suchen aber bisher ohne Erfolg ;-(

Vielleicht noch wichtig ist ein Auszug des Gesamtarrays:
Code:
....

[submitted_tree] => Array
 (
 [bezeichnung1] => Die Hauptangabe
 [anzahl] => 1
 [weitere_angabe] => Array
 (
 [bezeichnung2] =>
 [anzahl2] =>
 [weitere_angabe] => Array
 (
 [bezeichnung3] =>
 [anzahl3] =>

... usw
Wichtig ist auch, dass ich mich hier schon gar nicht mehr auf der Hauptebene des Arrays befinde, sondern nur ein Sub-Array weiter auslesen möchte.

Hoffe, hier kann mir jemand helfen!

vistree
kai.kobold ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 31.12.2008, 14:53  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Unter PHP: array_filter - Manual wird in den user contributed notes eine Funktion array_filter_recursive vorgestellt, die Dir vielleicht weiterhilft.
David ist offline  
Alt 31.12.2008, 16:52  
Neuer Benutzer
 
Registriert seit: 31.12.2008
Beiträge: 2
kai.kobold befindet sich auf einem aufstrebenden Ast
Standard

Hallo David,
danke für den Tipp.
Habe es ausprobiert, aber irgendwie komme ich auch hier nicht über die erste Ebene hinweg ;-(

Also, die von dir genannte Funktion lautet im Original:
PHP-Code:
<?php
  
function array_filter_recursive($input)
  {
    foreach (
$input as &$value)
    {
      if (
is_array($value))
      {
        
$value array_filter_recursive($value);
      }
    }
   
    return 
array_filter($input);
  }
?>
Jetzt habe ich versucht, dass auf meine Verhältnisse anzupassen, was aber irgendwie nicht richtig funzt ;-(

PHP-Code:
  function array_filter_recursive($form_values)
  {
    foreach (
$form_values as $value)
    {
      if (
is_array($value))
      {
        
$value array_filter_recursive($value);
      }
    }

    return 
array_filter($form_values);
  } 
Wenn ich foreach direkt verwende, ohne das in eine Funktion einzubetten,
dann funktioniert es zumindest auf oberster Ebene. Hier muss ich dann aber aus $form_values auch das $form_values['submitted_values'] machen.

Setze ich das $form_values['submitted_values'] statt $input überall ein, so krieg ich ne Fehlermeldung bezüglich dem [ vom submitted_values. Geht also auch nicht.
Ich bin total aufgeschmissen und weiß einfach nicht wie ich hier vernünftig umsetze.

Noch jemand einen Tipp für mich?

Viele Grüße

vistree
kai.kobold 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
erstellungsdatum auslesen und sortiren SteiniKeule PHP Tipps 2008 10 30.11.2008 13:57
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Zweidimensionales Array auslesen u wieder in Array schreiben Lobo PHP Tipps 2006 7 20.04.2006 11:37
[Erledigt] array im array auslesen PHP Tipps 2006 3 15.03.2006 21:33
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Bestimmte Felder in Array auslesen winfo_cologne PHP Tipps 2005-2 5 19.09.2005 17:15
leere Arrayfelder aus dem Array werfen micbur PHP Tipps 2005-2 5 02.09.2005 16:08
Array in Session speichern und wieder auslesen Riot PHP Tipps 2005-2 3 08.07.2005 11:43
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
leere felder entfernen PHP Tipps 2007 14 04.01.2005 10:59
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
bbcode - Classe PHP-Fortgeschrittene 4 18.09.2004 17:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array verschachtelt, php verschachtelte arrays, php arrays verschachteln, php verschachtelte array, verschachtelte arrays php, array verschachtelt, array auslesen, php array auslesen, arrays verschachteln, verschachtelte arrays auslesen, php array verschachteln, verschachtelte array php, verschachtelte arrays, php verschachtelte arrays auslesen, verschachtelte array, array verschachteln, arrays verschachteln php, verschachtelte array auslesen, php verschachtelter array, array verschachteln php

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