• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Probleme mit in_array()

Status
Für weitere Antworten geschlossen.

ma8391

Neues Mitglied
Hallo,
ich hab folgendes Problem: Ich möchte ein Array nach einem bestimmten Namen durchsuchen lassen. Der Name ist in einer txt Datei gespeichert. Das funktioniert auch wunderbar, doch wenn die Datei leer ist, und überprüft werden soll, ob ein gewisser Name schon drin steht, dann kommt folgende Warnung:
Warning: in_array() [webhosting24 - Login]: Wrong datatype for second argument on line...
Kann mir da jmd. helfen bzw. sagen, welche Funktion ich sonst verwenden soll?
Danke
 
Werbung:
Dein zweiter Parameter hat den falschen Datentyp.
Poste mal dein Script, dass wir helfen können.
 
PHP:
for($i=(count($inhalt)-1); $i>=0; $i--){ 
list($Nachname, $Vorname) = explode('|', $inhalt[$i]);   
$a[$i] = $Nachname;   
$b[$i] = $Vorname;    
}    
if (in_array($_SESSION['session_vorname'], $b)){....}
else{....}
 
Werbung:
Ist $inhalt das Array das die Datei beinhaltet? Wenn ja, solltest du erst mal abfragen, ob es überhaupt Inhalt gibt.
 
$inhalt ist das Array, das die Datei beinhaltet. Der Fehler tritt immer auf, wenn noch nichts in der Datei steht. Wie kann man den am Besten bzw. elegantesten abfangen?
 
in_array kann ein array nicht nach einem array durchsuchen. Da $b beim aufruf keine index hat übergibst du das gesamte array in $b und nicht nur den gesuchten namen.
 
Werbung:
Wieso?

$_SESSION["session_vorname"] ist der Wert, der in Array $b vorkommen soll
das sollte eigentlich so stimmen, ich vermute eher dass er $b gar nicht setzt weil der Dateiinhalt null ist - also läuft die for schleife nicht und somit entsteht kein Array $b und kein Array $a

Probier es mal so
PHP:
for($i=(count($inhalt)-1); $i>=0; $i--)
{
  list($Nachname, $Vorname) = explode('|', $inhalt[$i]);   
  $a[$i] = $Nachname;   
  $b[$i] = $Vorname;    
}   
if(is_array($b))
{ 
  if (in_array($_SESSION['session_vorname'], $b))
  {
    echo $_SESSION['session_vorname']." in \$b vorhanden";
  }
  else
  {
    echo $_SESSION['session_vorname']." in \$b <b>nicht</b> vorhanden";
  }
}
else
{
  echo "\$b ist kein Array <pre>";
  var_dump($b);
  echo "</pre>";
}

Umgehen könntest du das Problem auch einfach, indem du $a und $b vor der schleife initialisierst

Wenn du error_reporting(E_ALL) nutzt müsste er dir auch sagen, dass du eine nicht definierte Variable benutzt
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben