2016-03-18 11 views
1

İki dizim var ve bir ilişkilendirici dizinin her satırı için anahtar olacak şekilde ilk diziden değere ihtiyacım var. Sanırım doğru bir şekilde söyledim. Böyle görünmek ikinci dizilerde her değerlerini değiştirmek için ilk diziden değere gerekPHP Başka bir dizi değeriyle bir ilişkilendirici dizi anahtarının nasıl değiştirileceği

Array 
(
    [field_name0] => first_name 
    [field_name1] => mobile 
    [field_name2] => email 
    [field_name3] => last_name 
) 

ve

Array 
(
[1] => Array 
    (
     [First Name] => Peter 
     [mobile] => 1234567890 
     [email] => [email protected] 
     [Last Name] => Griffin 
    ) 

[2] => Array 
    (
     [First Name] => Al 
     [mobile] => 9874561230 
     [email] => [email protected] 
     [Last Name] => Bundy 
    ) 

) 

:

Array 
(
[1] => Array 
    (
     [first_name] => Peter 
     [mobile] => 1234567890 
     [email] => [email protected] 
     [last_name] => Griffin 
    ) 

[2] => Array 
    (
     [first_name] => Al 
     [mobile] => 9874561230 
     [email] => [email protected] 
     [last_name] => Bundy 
    ) 

) 

İki diziler var Bunu gerçekleştirmek için bazı foreach döngülerinde bazı kötü denemeler denedim ama benim için biraz zor oluyor. Lütfen yardım et. Umarım bunu yapmanın basit bir yolunu görmezden geldim.

Denedim Ne: -

foreach($field_map as $origKey => $value){ 
     foreach($csvdata as $csvrow){ 
      foreach($csvrow as $cKey => $cValue){ 
        $newKey = $value; 
        $newArray[$newKey] = $cValue; 
      } 
     } 
} 
+0

bu bildiğim kadarıyla kazanılmış ettik utanç verici olduğunu olmadan: 'foreach ($ origKey => $ değer olarak $ field_map) { foreach ($ csvrow olarak $ csvdata) { foreach ($ csvrow, $ cKey => $ cValue) { $ newKey = $ değer; $ newArray [$ newKey] = $ cValue; } } } – khtims75

+0

$ field_map ilk dizi ve $ csvdata ikinci – khtims75

+0

khtims75 olmak lütfen en son yanıtımı kontrol edin. Cevabımı silme –

cevap

2

Bu komut:

$users = [ 
    [ 
     'First Name' => 'Peter', 
     'mobile' => 1234567890, 
     'email' => '[email protected]', 
     'Last Name' => 'Griffin', 
    ], 
    [ 
     'First Name' => 'Al', 
     'mobile' => 9874561230, 
     'email' => '[email protected]', 
     'Last Name' => 'Bundy', 
    ], 
]; 

$fields = [ 
    'field_name0' => 'first_name', 
    'field_name1' => 'mobile', 
    'field_name2' => 'email', 
    'field_name3' => 'last_name', 
]; 

$fieldNames = array_values($fields); 
foreach ($users as &$user) { 
    $user = array_combine($fields, array_values($user)); 
} 
print_r($users); 

ne istediğini verir.

Etkin olarak yalnızca anahtarları atar ve bu öğelerin sırasına dayanırız. İşte

+0

Evet! Bu kadar! tam olarak ihtiyacım olan şey. Teşekkürler Konstantin !! – khtims75

+0

da şartlarınız bana istediklerinizi uyguladıysa çalışmaz. –

+0

Oh? Kodumdaki bazı örnekleri test edip çalışıp çalışmadığını kontrol edeceğim. – khtims75