2016-09-19 3 views
0

Ich brauche diese Funktion, um ein Array zurückzugeben. Wenn ich die Funktion anrufe, druckt es das Array, aber wenn ich return $finalResult in der Funktion verwende, druckt es nur das erste Array.Array von Funktion zurückgeben php


function readData($file) 
{ 
    $finalResult = array(); 
    $inputText = file_get_contents($file); 
    $textLines = explode("\n", $inputText); 
    foreach ($textLines as $line) 
    { 
     $expLine = explode("\t", $line); 
     if (count($expLine) < 8) 
     { 
      # The line does not have enough items, deal with error 
      //echo "Item " . (isset($expLine[0]) ? $expLine[0]." " : "") . "ignored    because of errors\n"; 
      continue; 
     } 
     $finalResult = array(
      "title" => $expLine[0], 
      "author" => $expLine[1], 
      "isbn" => $expLine[2], 
      "hardcover" => $expLine[3], 
      "hc-quantity" => $expLine[4], 
      "softcover" => $expLine[5], 
      "sc-quantity" => $expLine[6], 
      "e-book" => $expLine[7], 
     ); 
     $arr = $finalResult; 
     print_r($arr); 
    } 
} 
+0

Bewegen Sie den print_r außerhalb der Schleife finalResult sehen} und dann ändere es um zurückzukehren ... Wo du $ arr = $ finalResult hast; Verwenden Sie die Array-Zusammenführung, um sie zusammenzufügen – ZBerg

Antwort

0

Hallo Sie Mus merge oder Push-Array $ sammple

function readData($file){ 

    $finalResult = array(); 


    $inputText = file_get_contents($file); 


    $textLines = explode("\n", $inputText); 


    foreach($textLines as $line) { 

    $expLine = explode("\t", $line); 

    if (count($expLine) < 8) { 
     # The line does not have enough items, deal with error 
     //echo "Item " . (isset($expLine[0]) ? $expLine[0]." " : "") . "ignored    because of errors\n"; 
     continue; 
    } 
    //Here [] 
    $finalResult[] = array( 
     "title" =>$expLine[0], 
     "author"  => $expLine[1], 
     "isbn"  => $expLine[2], 
     "hardcover" => $expLine[3], 
     "hc-quantity" => $expLine[4], 
     "softcover" => $expLine[5], 
     "sc-quantity" => $expLine[6], 
     "e-book"  => $expLine[7], 

    ); 
    //$arr=$finalResult; 
    //print_r($arr);   
    } 
    return $finalResult; 
    } 
+0

Dies gibt ein indiziertes Array von Arrays zurück? – ZBerg

+0

Es gibt alle Array zurück, die Sie erstellen .. Sie können print_r Rückgabewert und checkit out :) – HoangHieu

-2

Wie in meinem Kommentar oben beschrieben

function readData($file){ 

    $arr   = array(); 
    $finalResult = array(); 
    $inputText = file_get_contents($file); 
    $textLines = explode("\n", $inputText); 

    foreach($textLines as $line) { 
     $expLine = explode("\t", $line); 
     if (count($expLine) < 8) { 
      # The line does not have enough items, deal with error 
      //echo "Item " . (isset($expLine[0]) ? $expLine[0]." " : "") . "ignored    because of errors\n"; 
      continue; 
     } 
     $finalResult = array(
      "title" =>$expLine[0], 
      "author"  => $expLine[1], 
      "isbn"  => $expLine[2], 
      "hardcover" => $expLine[3], 
      "hc-quantity" => $expLine[4], 
      "softcover" => $expLine[5], 
      "sc-quantity" => $expLine[6], 
      "e-book"  => $expLine[7], 
     ); 
     $arr=array_merge($arr, $finalResult); 
    } 

    return $arr; 
}