2016-04-14 8 views
0

2 dizim var.
Dizisi 1: ABD Eyaletleri kısaltmalar ve kimlikleri ve yine içeren başka bir şöyle kısaltmalar ve diğer verileri, ABD ile birKarşılık gelen yeni bir öğeyi başka bir diziden diziye eklemek için etkin bir yol nedir?

Array 
    (
     [1] => AL 
     [2] => AK 
     [3] => AZ 
     [4] => CA 
     [5] => FL 
     [6] => MA 
     [7] => IL 
    ) 

Dizisi 2: Ben sonuna kadar çalışıyorum

Array 
(
    [0] => Array 
     (
      [0] => AK 
      [1] => Other State Data 
     ) 

    [1] => Array 
     (
      [0] => FL 
      [1] => Other State Data 
     ) 

    [2] => Array 
     (
      [0] => AK 
      [1] => Other State Data 
     ) 

    [3] => Array 
     (
      [0] => CA 
      [1] => Other State Data 
     ) 

    [4] => Array 
     (
      [0] => CA 
      [1] => Other State Data 
     ) 

    [5] => Array 
     (
      [0] => FL 
      [1] => Other State Data 
     ) 

    [6] => Array 
     (
      [0] => AL 
      [1] => Other State Data 
     ) 

    [7] => Array 
     (
      [0] => IL 
      [1] => Other State Data 
     ) 

    [8] => Array 
     (
      [0] => AL 
      [1] => Other State Data 
     ) 

    [9] => Array 
     (
      [0] => AZ 
      [1] => Other State Data 
     ) 

    [10] => Array 
     (
      [0] => MA 
      [1] => Other State Data 
     ) 
) 

2 diziyi karşılaştırarak ve ikincisine yerleştirerek, kısaltma olduğunda ilk dizinin anahtar konumu. Sonuç olarak aşağıdaki gibi olmalıdır:

Array 
(
    [0] => Array 
     (
      [0] => AK 
      [1] => Other State Data 
      [2] => 2 
     ) 
    [1] => Array 
     (
      [0] => FL 
      [1] => Other State Data 
      [2] => 5 
     ) 
... and so on... 

Kullanmayı düşünmem gereken uygun kullanışlı işlev var mı? Değilse, etkili bir paradigma nasıl görünecekti? Dizi üzerinde döngü yapmak ve her üye kontrol etmek?

* Dizgi değerleri için tırnak kullanmama ve bu ses bozuksa benim ingilizce için özür dilerim. Teşekkürler!

cevap

1

Bunu denemedim, ama teoride işe yaramalı. İkinci dizinin üzerine geçin çünkü değiştireceğiniz moddur ve ilk dizide durum kodunu arayın.

foreach ($secondArray as &$values) { 
    list ($state, $otherData) = $values; 
    $stateKey = array_search($state, $firstArray); 
    if (false !== $stateKey) { 
     $values[] = $stateKey; 
    } 
} 
2

İlk çevirme tuşu/kısaltmalar/kimlikleri dizinin değerleri daha sonra değiştirmek ana veri dizisi array_walk ile:

$flipped = array_flip($abbreviationsArray); 
array_walk($data, function(&$item) use($flipped) { 
    if(isset($flipped[ $item[0] ])) $item[] = $flipped[ $item[0] ]; 
}); 

array_walk süreç her veri dizi öğesi bulduysanız, bu ikinci diziye anahtar eklemek : her eleman için - çevrilmiş dizide mevcut eleman [0] ile aynı anahtara sahip bir eleman varsa - bunu eleman [2] olarak ekliyoruz. Sonunda $data At

şuna benzer: Cevabınız ve demo, ilginç bir yaklaşım için

Array 
(
    [0] => Array 
     (
      [0] => AK 
      [1] => Other State Data 
      [2] => 2 
     ) 
    [1] => Array 
     (
      [0] => FL 
      [1] => Other State Data 
      [2] => 5 
     ) 
    [2] => Array 
     (
      [0] => AK 
      [1] => Other State Data 
      [2] => 2 
    (...) 
) 

eval.in demo

+0

sayesinde. Robbie'nin cevabı ile devam edeceğim, çünkü biraz daha hızlı çalışıyor. – tafvita