php - başka bir dizinin öğeleri ile dizi elemanlarını değiştirin?

2 Cevap php

Değil bu konuda gitmek nasıl emin ...

Ama ikinci dizinin çok daha fazla unsur vardır ... iki dizileri, güncel bilgi ile bir, eski bilgi ile başka bir var, ama "update" güncel bilgi ile eski bir arıyorum.

İşte diziler benziyor ne:

//Outdated
Array (
    [0] => Array
        (
            [anum] => 3236468462
            [cid] => 4899097762
            [mid] => 1104881401  
            [na_title] =>         
            [na_fname] => JOHN                   
            [m_initial] =>  
            [na_lname] => DOE           
            [na_suffix] =>     
            [na_addr1] => 1234 SAMPLE AVENUE           
            [na_addr2] =>                             
            [na_city] => NORWALK           
            [state] => OH
            [zip] => 
            [zip_plus_4] => 
            [route] => R002
            [dma_code] => 510334
        )
)


//Updated
Array (
    [1] => Array
        (
            [0] => YUD990
            [1] => 98
            [2] => 1234 Sample Avenue
            [3] => 
            [4] => Norwalk
            [5] => OH
            [6] => 44857-9215
            [7] => 3236468462
        )
)

Açıklığa kavuşturmak istiyorum:

(1) eski dizide [anum] için değeri ile güncellenen dizi [7] için değerini Maç ve sonra güncelleştirme [na_addr1], [na_addr2], [na_city], [devlet], [zip] [zip_plus_4] için değerler ile eski dizi [2], [3], [4], [5], [6] (I güncellenmiş [6] onu almak için ben bölmek gerekir biliyorum modası geçmiş düzeltilmiş harita)

Bu çok kafa karıştırıcı yapıyorum gibi hissediyorum ... kusura bakma ...

2 Cevap

Güncelleme dizinin yapısı asla değişmeyeceğini varsayarak, sadece kodu altında kullanabilirsiniz. (Ben 'zip' ilk 5 basamaklı ve zip_plus_4 son 4 rakam olduğunu varsayarak yaşıyorum, ama onlar olması gerekiyordu tam olarak ne net değilim.)

$old_array['anum'] = $new_array[7];
$old_array['na_addr1'] = $new_array[2];
$old_array['na_addr2'] = $new_array[2];
$old_array['na_city'] = $new_array[3];
$old_array['state'] = $new_array[4];
$zip_code = explode('-', $new_array[6]);
$old_array['zip'] = $zip_code[0];
$old_array['zip_plus_4'] = $zip_code[1];

Ben niye ikinci dizi eşleşen anahtarları kendi kümesini kullanmak olmadığından emin değilim. Bu daha okunabilir olacak ve yardım tutarlı şeyleri tutar. Başka bir alan ekleyerek sonuna kadar Örneğin, bazı unsurların sadece baş ağrısı neden olur, biri tarafından telafi edilebilir. Diziler aynı tuşları kullanılır ama eğer aşağıdaki kodu kullanabilirsiniz ve her şey iyi olurdu.

$old_array['anum'] = $new_array['anum'];
$old_array['na_addr1'] = $new_array['na_addr1'];
(etc)

Güncellenen dizi aksi değerleri eski yerine nasıl bilmek için hiçbir yolu yoktur, anahtarları eşleşen gerekiyor. Sonra standart bir dizi çalışmaları birleştirmek.

$new = array_merge($outdated, $updated);