foreach-Schleifen

schiese

Erfahrenes Mitglied
Hi,

ich wollte zwei Arrays nach Alter und Ort durchsuchen.

PHP:
$arrayalter = array("..","..","..","..");
$arrayort = array("..","..","..","..","..");

$ort = $_POST['ort'];
$altermin = $_POST['min'];
$altermax = $_POST['max'];

foreach( $arrayalter as $array1nummer=>$altersuchen ) {
	if ( $altersuchen >= $altermin && $altersuchen <= $altermax ) {
		foreach( $arrayort[$array1nummer] as $array2nummer=>$ortsuchen ) {
			if ( $ortsuchen == $ort ) {
				echo $ortsuchen;
}
}
}
}
Die erste foreach-Schleife funktioniert auch noch. Aber ab der 2ten spinnt er. Ich schätze mal, dass es da dran liegt:
Code:
$arrayort[$array1nummer]
Aber ich will halt, dass er nur die Elemente des Arrays durchsucht, bei denen es bei der ersten Suche schon Übereinstimmungen gab!

Danke schiese
 
Setz mal die Fehlermeldungssensibilität PHPs auf den höchsten Level (siehe error_reporting()-Funktion). Denn dann wirst du wahrscheinlich die Fehlermeldung „Invalid argument supplied for foreach()“ erhalten, die darauf hinweißt, dass dem foreach-Kontrollkonstrukt ein falscher Datentyp übergeben wurde. In deinem Fall ist das „$arrayort[$array1nummer]“ nämlich kein Array.
 
ABer wenn ich einfach nur $arrayort nehme, gibt er mir "Anzahl der ersten foreach" * $ort aus. Also, wenn der Ort z.B. Berlin ist, gibt er mir 5 mal Berlin aus!

Muss ich sonst die ersten Übereinstimmungen in einem neuen Array zwischenspeichern?

schiese
 
Wir sollen von der Schule aus sonne Art Suche erstellen. Ich wollte es so machen:

In einem Array habe ich altersangaben
Code:
$arrayalter = array("12","14","16","18","56","78","34");
in einem anderen z.B. Orte
Code:
$arrayort = array("berlin","hamburg","köln","münster","selm","hamm","lünen");

Jetzt wollte ich die Elemente des ersten Arrays haben, die z.B. >= 16 und <= 18 sind. Das klappt auch noch. Aber wenn ich jetzt nur die haben will, die >= 16 und <= 18 UND aus köln sind, klappt es so nicht mehr.

schiese
 
Die werden per Formular übergeben.

PHP:
$altermin = $_POST['min'];
$altermax = $_POST['max'];
$ort = $_POST['ort'];
 
Teste bitte einmal folgendes:

PHP:
<?php 

      $arrayalter = array("5","15","20","30");
      $arrayort = array("München","Hamburg","Berlin","Köln","Stuttgart");

      $ort = $_POST['ort'];
      $altermin = $_POST['min'];
      $altermax = $_POST['max']; 
      
      for($i=0;$i < count($arrayalter);$i++){
          if($arrayalter[$i] >= $altermin && $arrayalter[$i] <= $altermax ){
              if($arrayort[$i] == $ort){
          $gesuchter_ort = $ort;
              }
              else{
              $sorry = "gesuchter Ort ist nicht vorhanden!";
          }
          }
        
      }
      echo $sorry;
      echo $gesuchter_ort;
      
 ?>
 
@RS9999 danke für deine Antwort, bei deinem Code ist es nur so, dass er sagt, dass der Ort nicht vorhanden ist, die Variable aber trotzdem gefüllt ist!

PHP:
<?php

$arrayalter = array("17","34","54","19","16","19","21","23","27","24","67","26","15","19","65","65");
$arrayort = array("lübeck","münster","hamburg","berlin","neumünster","köln","münchen","bremen","osnabrück","delmenhorst","wildeshausen","preetz","flintbek","potsdam","list","elmshorn");

$altermin = $_POST['min'];
$altermax = $_POST['max'];
$ort = $_POST['ort'];


      for($i=0;$i < count($arrayalter);$i++){
          if($arrayalter[$i] >= $altermin && $arrayalter[$i] <= $altermax ){
              if($arrayort[$i] == $ort){
          $gesuchter_ort = $ort;
              }
              else{
              $sorry = "gesuchter Ort ist nicht vorhanden!";
          }
          }
        
      }
      echo $sorry;
      echo $gesuchter_ort;

?>

Ausgabe: gesuchter Ort ist nicht vorhanden!münchen

Habe so gesucht: $altermin: 21 $altermax: 25 $ort: münchen

schiese
 
Habe es noch einmal geändert, war ein Fehler in der Bedingung!

PHP:
<?php 

      $arrayalter = array("5","15","20","30");
      $arrayort = array("München","Hamburg","Berlin","Köln");

      $ort ="Hamburg";
      $altermin = "5";
      $altermax = "30"; 
      
      for($i=0;$i < count($arrayalter);$i++){
        if($arrayalter[$i] >= $altermin && $arrayalter[$i] <= $altermax ){
           if(in_array($ort,$arrayort)){
             $gesuchter_ort = $ort;
           }
           else{
             $fehler = "gesuchter Ort ist nicht vorhanden!";
           }
        }
        
      }
      
      echo $gesuchter_ort;
      echo $fehler;
 ?>
 
Zurück