dedlfix: Hash Array durchsuchen

Beitrag lesen

Es gibt 2 Datenquellen - eine Datenbank und ein CSV File.
Der Inhalt des CSV setzt sich aus 3 Daten zusammen Bsp. 176,Pfadangabe.....,3. Die erste Stelle ist eine Kategorie ($cat_id),

Heißt das, dass die erste Spalte jeweils ein dateiweit eindeutiger Wert ist oder kann ein bestimmter Wert auch mehrfach auftreten?

die zweite wie beschrieben ($path) und die dritte dient zur Sortierung ($sort). Naürlich sind es mehrere Zeilen mit unterschiedlichen Inhalt. Diese lese ich per "split" in folgendes Array

$file ="muster2.csv";
$farray   =  file($file) or die("Fehler)");
if($farray)
{
   foreach($farray as $line)
   {
       list($cat_id, $path, $sort) = split(";", $line);

Zwei Dinge: Wenn du split() ohne regular expressions verwenden willst, solltest du lieber explode() nehmen. Das ist da schneller. Außerdem funktioniert dein split() nicht wie von dir gewünscht wenn das Semikolon innerhalb einer quotierten Zeichenfolge auftaucht wert1;"wert2 mit semikolon;...";wert3 Das mag zwar in deinem Fall nicht vorkommen, aber warum nicht gleich richtig machen? Es gibt da nämlich eine Funktion namens fgetcsv()

$filehash = array();
$handle = fopen ("muster2.csv", "r");
while (($data = fgetcsv ($handle, 1000, ";")) !== FALSE) {
  if (count($data) < 3) continue; // oder halt was anderes passendes verwenden
  if (count($data) > 3) continue; // oder halt was anderes passendes verwenden
  ...
}
fclose ($handle);

foreach($results as $result) {
  ...
}

Diese Array möchte ich gerne durchsuchen und den Datensätzen aus der DB mit den passenden cat_id´s zuordnen (die gleiche ID kann mehrfach vorkommen) Dies versuche ich so:

Ich kann aus deinen Worten die Aufgabenstellung noch nicht erkennen. Was willst du am Ende für ein Ergebnis bekommen? Dein Code erzeugt im zweiten Teil nur ein paar Ausgaben. Die ...-Stellen in meinem Beispiel kann ich dir momentan nicht ausfüllen.

Mit foreach kann ich das Array ja nicht durchsuchen denke ich?!?!

foreach durchsucht nicht, es wendet einfach nur die nachfolgende Anweisung auf alle Elemente eines Arrays an. Diese Anweisung kann aber durchaus auch einen Vergleich enthalten...
Ob bei die ein geschachteltes foreach (results außen und filehash innen) sinnvoll ist, kann ich dir momentan nicht sagen.