2014-02-17 30 views
1

我有一個看起來像這樣的數組:數組值的第一個字要陣列關鍵

Array 
(
    [20] => ADEP EGKK 

    [21] => ADES EGLL 

    [22] => AOARCID ABC 

    [23] => AOOPR ABC 

    [24] => ARCID ABC123 

    [25] => ARCTYP MD11 

正如你所看到的第一個數組的鍵是20,因爲第19我未設置使用的preg_match:

if (isset($_POST['plan'])) 
    $fplparts = explode("-", $fpl); 
     $pattern = "/FAC|TITLE|BEGIN|END|PT|PTID|ATSRT|ICAOCONTENT/i"; 

    foreach($fplparts as $key => $value) { 
    if (preg_match($pattern, $value)){ 
     unset($fplparts[$key]); 
    } 
    } 
    print_r($fplparts); 

現在我怎麼會喜歡我的陣列看起來像就是:

Array 
(
    [ADEP] => EGKK 

    [ADES] => EGLL 

    [AOARCID] => ABC 

    [AOOPR] => ABC 

    [ARCID] => ABC123 

    [ARCTYP] => MD11 

所以基本上,我想移動的第一個字的每個價值,並使其成爲關鍵。

什麼是最好的方式去做這件事?

謝謝先進。

回答

1

你可以這樣說:

$newArray = array(); 

foreach ($oldArray as $item) 
{ 
    list($key, $value) = explode(' ', $item, 2); 
    $newArray[$key] = $value; 
} 

但也有一定的侷限性,例如,你必須確保第一個字符串(您要爲關鍵)將是唯一的,否則就會重寫數據。在explode() 第三個參數(2)用於確保ADEP EGKK EGKK EGKK將導致:

[ADEP] => EGKK EGKK EGKK 
+0

感謝你的幫助,這是非常有用的!正如你所說,這隻適用於獨特的字符串,但我可能有多個ADEP值,例如,我會怎麼做呢? 因此,例如有: [ADEP] => EGKK [ADEP] => EGLL [ADEP] => EDDN – olivermbs

+0

那麼,你不能有相同的鍵的多個陣列的物品,所以得,例如,添加一些隨機後綴('ADEP_2567874'),計數器('ADEP','ADEP2','ADEP3' ...)和重複原始密鑰('ADEP','ADEPADEP','ADEPADEPADEP')。 –

相關問題