2016-05-15 18 views
0

Ich frage mich, ob ich eine Richtung und Klarheit in dem haben kann, was ich tun muss. Ich nehme eine Eingabe (Texteingabe) und suche eine CSV-Datei, die ich in ein Array konvertieren kann.Mehrdimensionales Array suchen und drucken

Ich habe herausgefunden, es mit diesem suchen:

$keys = array_keys(array_column($csv, 0), $SearchThis); 

Wo $csv meine Array (multidimensional) und $SearchThis der Eingang zu suchen ist.

Mein Problem ist, dass $keys macht ein Array mit Werten, von denen Zeile, die Daten in gefunden wurde.

Ich möchte mit diesen Zeilen aus dem Hauptarray $csv eine Tabelle in der Lage sein anzuzeigen. (Jede Zeile hat eine Liste von Daten, die auf der Tabelle angezeigt werden.)

Ich bin ziemlich neu in PHP, also hoffe ich, dass dies eine einfache Lösung ist?

Alle Hilfe würde sehr geschätzt werden. Gerade hinter der Logik Zeilen aus den Reihen nehmen usw.

Antwort

0

Nun, wenn Ihr Code, um die richtigen Zeilen bereits zurückkehrt, alles was Sie brauchen, dann ist zu tun, um die Array-Filter nur die Zeilen enthalten. Zum Beispiel:

$keys = array_keys(array_column($csv, 0), $SearchThis); // Your original code 
$new_csv = [];           // [] is shorthand for an empty array. 
foreach($keys as $index) {        // Iterate over the keys 
    $new_csv[] = $csv[$index];       // Copy the matching rows to our new array 
} 

$new_csv enthalten jetzt nur die passenden Zeilen aus dem jetzt Original.

+0

Das war genau was ich brauchte !!!! Vielen Dank!!! –

0

$csv Unter der Annahme ist ein Array, das von der Art ist,

[ 
    [ cell1, cell2, ... ], 
    ... 
] 

Dann würden Sie wahrscheinlich mit einem Rückruf ein array_filter für jede Zeile in der CSV mögen, die zurückgibt treu zu Reihe ist, und falsch die Zeile auszuschließen:

$searchStr = '123'; 
array_filter($csv, function($row) use (&$searchStr) { 
    return $row[0] == $searchStr; 
});