Werte aus array filtern und in schleife ausgeben

phpameise

Mitglied
Mein Problem als Anfänger: Möchte 'leere' Werte aus array filtern, anzeigen und mit Zeilennummer versehen. Meine 2 Ansätze:

Hier fehlt jeweils die Zeilennummerierung. Die Variable $zeile ist von mir nur angedeutet und nicht belegt.
PHP:
<?php
$Sprachen = array("englisch", "spanisch", "", "chinesisch");
$Kenntnisse = array("gut", "sehr gut", "", "gut");
for ( $x = 0; $x < count($Sprachen); $x++ )
  {	  
  if ($Sprachen[$x] != '')
  echo "$zeile. Fremdsprache: $Sprachen[$x] $Kenntnisse[$x] <br />";
  }
?>

Im Beispiel werden 3 Sätze angezeigt, richtig nummeriert, aber der 3. Satz bleibt ohne Werte.
PHP:
<?php
$Sprachen = array("englisch", "spanisch", "", "chinesisch");
$SprachenGefiltert = array_filter($Sprachen, create_function('$Sprache', 'return $Sprache != "";') );
$Kenntnisse = array("gut", "sehr gut", "", "gut");
$KenntnisseGefiltert = array_filter( $Kenntnisse, create_function('$Kenntnis', 'return $Kenntnis != "";') );
?>

<?php for ( $x = 0; $x < count($SprachenGefiltert); $x++ )
{
$zeile= $x+1; echo "$zeile. Fremdsprache"; echo " $SprachenGefiltert[$x] "; echo " $KenntnisseGefiltert[$x] <br />";
} ?>

Mein angstrebtes Ergebnis:
1. Fremdsprache: englisch gut
2. Fremdsprache: spanisch sehr gut
3. Fremdsprache: chinesisch gut

Kann mir jemand helfen? Danke schon jetzt.
 
Dein erstes Beispiel ist gar nicht mal so verkehr, was fählt ist einfach nur eine Variable die Zeile zählt hab es ein wenig ausgebessert ^^
PHP:
<?php
$Sprachen = array("englisch", "spanisch", "", "chinesisch");
$Kenntnisse = array("gut", "sehr gut", "", "gut");
$zeile = 1; // setzte hier die Zeile auf 1...
for ( $x = 0; $x < count($Sprachen); $x++ )
{      
  if ($Sprachen[$x] != '')
  {
  echo $zeile. ".Fremdsprache: $Sprachen[$x] $Kenntnisse[$x] <br />";//...hier wird $zeile eingetragen 
  $zeile = $zeile +1; // ...und hier wird diese immer um eins erhöht
  }
}
?>
 
PHP:
$Sprachen = array_filter(array("englisch", "spanisch", "", "chinesisch"));
$Kenntnisse = array_filter(array("gut", "sehr gut", "", "gut"));
echo '<ol>';
for ($i=0,$iEnd=count($Sprachen);$i<$iEnd;$i++)
  echo '<li>Fremdsprache: '.$Sprachen[$i].' '.$Kenntnisse[$i].'</li>';
echo '</ol>';

Es wäre gut zu wissen warum die Felder leer sind, dann würden sich auch bessere Möglichkeiten finden lassen.
 
Vielen, vielen Dank für die 2 Lösungen. Auf die Frage warum die Felder leer sein können - In der Praxis hole ich die Daten aus einer user-tabelle. Es erschien mir nicht notwendig für diese Daten eine extra Tabelle anzulegen, was sicher immer richtig ist, auch wenn, wie in meinem Fall, nur maximal 6 Sprachen angegeben werden können. Leer bleibt ein Feld dann eben, wenn der user im Formular einige Felder nicht ausfüllt, weil er eben nur 2 Sprachen spricht. Ich kann ihn allerdings nicht einmal zwingen die 1. Sprache im ersten Feld anzugeben und die 2. Sprache im 2. Feld. Ich habe im Übrigen auch noch eine Lösung:
PHP:
$Sprachen = array("englisch", "spanisch", "", "chinesisch");
$Kenntnisse = array("gut", "sehr gut", "", "gut"); 
$n = 1; foreach($Sprachen as $key=>$sprache) { if($sprache != "") {
echo $n.". Fremdsprache: ".$sprache." ".$Kenntnisse[$key]." <br />";
$n++;
}
}
Also super vielen Dank
 
Zurück