2016-03-21 4 views
0

Ich habe Forschungen gemacht und habe noch keine Lösungen dafür gefunden. Endgültiger Gedanke kommt also zu Stackoverflow und stellt die Frage.PHP-Match-Werte zwischen 2 Arrays nicht gleichen Schlüssel

Ich habe 2 Array wie folgt:

BigArray

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [category_name] => Accountancy 
      [category_name_vi] => Kế toán 
      [category_id] => 1 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [category_name] => Armed forces 
      [category_name_vi] => Quân đội 
      [category_id] => 2 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [category_name] => Admin & Secretarial 
      [category_name_vi] => Thư ký & Hành chính 
      [category_id] => 3 
     ) 

    [3] => Array 
     (
      [id] => 4 
      [category_name] => Banking & Finance 
      [category_name_vi] => Tài chính & Ngân hàng 
      [category_id] => 4 
     ) 
) 

und SmallArray:

Array 
(
    [0] => Array 
     (
      [id] => 7 
      [category_id] => 2 
      [jobseeker_id] => 1 
     ) 

    [1] => Array 
     (
      [id] => 8 
      [category_id] => 3 
      [jobseeker_id] => 1 
     ) 
) 

Ok, jetzt wollte ich mit jeweils jeder category_id von SmallArray Link entsprechen category_name von BigArray und der Ausgang Ich brauche nur übereinstimmende Werte zwischen SmallArray und BigArray wo category_id von SmallArray Schlüssel und category_name von BigArray ist Wert wie unten:

Matched-Array:

Array 
    (
     [0] => Array 
      (
       [2] => Armed forces      
      ) 

     [1] => Array 
      (
       [3] => Admin & Secretarial 
      ) 
    ) 

Bisher habe ich versucht, array_intersect, 2 foreach-Schleifen aber kein Glück. Jede beraten wäre sehr geschätzt :(

Dank

Antwort

1

Dies sollte das tun.

foreach ($smallArray as $smallKey => $smallElement) { 
    foreach ($bigArray as $bigKey => $bigElement) { 
     if ($bigElement['id'] == $smallElement['category_id']) { 
      $smallArray[$smallKey] = array(
       $bigElement['id'] => $bigElement['category_name'], 
      ); 
      break; // for performance and no extra looping 
     } 
    } 
} 

Nach diesen Schleifen, Sie haben, was Sie in $smallArray wollen

+0

Perfect, danke sehr viel Dies rettete mein Leben !! – SonDang

+0

BTW, diese 2 Arrays werden direkt aus 2 Tabellen in der Datenbank (BigArray und SmallArray Tabelle). Glaubst du, ich sollte zusätzliche Spalte in SmallArray Tabellenname "Kategorie_Name" hinzufügen und Kategorie Name eingeben, um zu beschleunigen Leistung stattdessen tun foreach Schleifen wie oben? :) – SonDang

+1

Nein, keine gute Idee :). Sie sind völlig separate Konzepte. Es gibt andere Möglichkeiten, die Leistung zu verbessern. Wenn Sie aus der Datenbank lesen, ist der beste Weg, Tabellen zu verknüpfen (auf product.category_id = category.id), wenn Sie abfragen. –

Verwandte Themen