2016-09-15 2 views
-1

Ich habe ein Array namens Teile und enthält 7000 Elemente. Ich habe ein anderes Array, das Bilder anruft und 34000 Elemente enthält. Was ich versuche, ist, die Teilenummer von Array 1 zu erhalten und in das Array images zu schauen, um zu sehen, ob es eine Übereinstimmung gibt. Wenn eine Übereinstimmung gefunden wird, fügen Sie den Bildpfad und die Teile-ID in eine Tabelle ein. Hier ein Beispiel:Vergleichen Sie PHP-Arrays für den gleichen Wert

Dieses Element der Teile Array

array:8 [▼ 
    "id" => 1 
    "rank" => 0 
    "product_category_id" => "5" 
    "name" => "BRACKETS, METAL" 
    "part_num" => "100G" 
    "description" => "Gold Line aluminum bracket back mounting" 
    "created_at" => "-0001-11-30 00:00:00" 
    "updated_at" => "-0001-11-30 00:00:00" 
] 

Bilder Array

array:7 [▼ 
    0 => "100G_3Q_H.jpg" 
    1 => "13VX_3Q_L.jpg" 
    2 => "2025_TS_1.jpg" 
] 

So wie man sehen kann ich versuche zu sehen, ob PART_NUM 100G den Bildnamen übereinstimmt im Bilder-Array. wenn es den Bildnamen und die Teile-ID aus dem Teile-Array erhält.

Jede Hilfe wird sehr geschätzt.

BTW verwende ich Laravel 5,2

Dank

+0

Das Format der Bilddateinamen scheint nicht konsistent zu sein. Gibt es spezielle Regeln für die Angabe der Teilenummer in den Dateinamen? Wird es immer am Anfang sein? Wird es die gesamte Laufzeit vor dem ersten '_' oder' -' sein? –

+0

Ja. Die Teilenummer steht am Anfang des Dateinamens, danach gibt es einen Unterstrich. Jeder Bildname folgt diesem Muster – rafiaTech

+0

Ok. Ich habe speziell wegen '2025TS-1.jpg' in Ihrem Beispiel gefragt. –

Antwort

1

Zuerst erstellen Sie ein Array aller Teilenummern.

Anschließend durchlaufen Sie die Bilder, teilen Sie die Teilenummer auf und prüfen Sie, ob sie im Teilenummern-Array vorhanden ist.

Wenn dies der Fall ist, fügen Sie es zu einem Array von Bildern für diese Teilenummer hinzu.

Sie können dann entweder die leeren Teilenummer-Arrays herausfiltern oder sie verwerfen, wenn Sie die Bilder zur Datenbank hinzufügen.

foreach ($parts as $part) { 
    $imageMatches[$part['part_num']] = []; 
} 

foreach ($partImages as $image) { 
    $imageParts = explode('_', $image); 
    $imageNum = $imageParts[0]; 

    if (array_key_exists($imageNum, $imageMatches)) { 
    array_push($imageMatches[$imageNum], $image); 
    } 
} 
+0

Super! Vielen Dank für Ihre Hilfe. – rafiaTech

+0

Kein Problem, ich bin froh, Ihnen helfen zu können – phpchap

1

Da die Bilddateinamen sind von einem einheitlichen Format, können Sie Ihre Bilder Array vorverarbeiten Teilnummern mit entsprechenden Dateinamen abzubilden.

Dies wird ein Array mit Teilenummern als Schlüssel und Arrays von Dateinamen als Werte erstellen.

Auf diese Weise ist es viel effizienter, übereinstimmende Werte zu finden, wenn Sie Ihr Teile-Array iterieren.

foreach ($parts as $part) { 
    if (isset($map[$part['part_num']]) { 
     $images_array = $map[$part['part_num']]; 
     // insert whichever of the images you want 
    } 
} 
Verwandte Themen