Der Schwabe: Warning: array_map() expects argument 2 to be an array

hallo zusammen

Bin jetzt am ende mit meinem latein und flehe um hilfe.
Ich muss eine csv-datei auslesen und in eine html tabelle schreiben.
Das script äuft auch aber ich bekomme immer diese fehlermeldung die eine warnung ist:
Warning: array_map() expects argument 2 to be an array in /home/httpd/html/test/status.php on line 105.

Ich komm nicht auf den grund der meldung.
Das ist ein teil meines codes

elseif ($newdata == 2)
{
$result = "auswertung.csv";
$fp = fopen($result,"r");

while(!feof($fp))
     {
     $output = fgetcsv($fp,1024,";");
     $check_output = array_map("suche_leer", $output);
     if ($check_output[0]=="Call-Nr" || $check_output[4]=="i.A" )
        {
         continue;
        }
     else
        {
     printf("<tr><td width='120' class="g9">$check_output[0]</td><td width='70' class="g9">$check_output[1]</td><td width='120' class="g9">$check_output[2]</td><td width='120' class="g9">$check_output[3]</td><td width='120' class="g9">$check_output[4]</td></tr>");
        }
     }

printf("</table>");

fclose($fp);
}

und das ist die funktion die ich mit array_map aufrufe

function suche_leer($inhalt)
{

if ($inhalt=="")
   {
   return $inhalt = " ";
   }
   else
   {
   return $inhalt;
   }
}

Ich hoffe jemand kann mir helfen

vielen dank im voraus für Eure hilfe

mfG Der Schwabe

  1. Huhu Schwabe

    Warning: array_map() expects argument 2 to be an array in /home/httpd/html/test/status.php on line 105.

    Ich hoffe jemand kann mir helfen

    Dein Englischlehrer vielleicht...

    oder was verstehst Du an obiger Fehlermeldung nicht?

    Der 2te Parameter für array_map() soll vom Typ Array sein.

    Viele Grüße

    lulu

    1. hallo lulu

      Der 2te Parameter für array_map() soll vom Typ Array sein.

      vielen dank für Deine englisch-nachhilfe :-)
      aber das habe ich (ob Du's glaubst oder nicht) auch verstanden.
      Das hilft mir aber leider nicht weiter denn die fehlermeldung bleibt :-), denn mein 2ter parameter ist ein array

      $output = fgetcsv($fp,1024,";");
      $check_output = array_map("suche_leer", $output);

      vielleicht kann mir ja doch jemand helfen außer mein englischlehrer und Du.

      vielen dank im voraus für eure hilfe

      mfG Der Schwabe

      1. Huhu Schwabe

        Das hilft mir aber leider nicht weiter denn die fehlermeldung bleibt :-), denn mein 2ter parameter ist ein array

        fgetcsv() returns FALSE on error, including  end of file.

        Also liefert fgetcsv() nicht immer ein Array, besonders bei EOF nicht.

        [..]
        while(!feof($fp))
            {
            $output = fgetcsv($fp,1024,";");
            $check_output = array_map("suche_leer", $output);
        [..]

        versuch es mal so
        while($output = fgetcsv($fp,1024,";") )
            {
            $check_output = array_map("suche_leer", $output);
        [..]

        Viele Grüße

        lulu

        btw.: Hier noch eine nützliche Hilfsfunktion, damit kann man solche Fehler auch abfangen.

        function require_array(&$var)
        {
         if(!is_array($var)) $var=array($var);
        }

        Für Dein Beispiel wäre das dann

        while(!feof($fp))
            {
            $output = fgetcsv($fp,1024,";");
            require_array($output);
            $check_output = array_map("suche_leer", $output);
        [..]

        wobei es in diesem Fall deutlich hübscher ist, das fgetcsv in die While-Condition zu stecken.