2010-01-14 109 views
3

我有此數組:PHP數組操作

Array 
    (
     0 => "3_some val", 
     1 => "1_some other val", 
     2 => "0_val",   
     3 => "2_value", 
     4 => "4_other value" 
    ) 

考慮上述陣列,有沒有辦法從一個這樣的數組做什麼?

Array 
    (
     0 => "val", 
     1 => "some other val", 
     2 => "value",   
     3 => "some val", 
     4 => "other value" 
    ) 

竟強制將先於強調(_)是新創建的陣列中的關鍵數字。感謝

回答

5

這應做到:

$arr1 = array (
    0 => "3_some val", 
    1 => "1_some other val", 
    2 => "0_val",   
    3 => "2_value", 
    4 => "4_other value" 
); 

$result = array(); 

foreach($arr1 as $val) { 
    list($key, $value) = explode('_', $val, 2); 
    $result[$key] = $value; 
} 

// Sort by keys 
ksort($result); 

print_r($result)會打印出:

Array 
(
    [0] => val 
    [1] => some other val 
    [2] => value 
    [3] => some val 
    [4] => other value 
) 
+0

怎麼樣2 => 「0_val」, 3 => 「2_value」, – streetparade 2010-01-14 16:42:56

+1

更好地使用'爆炸('_',$ val,2)'。 – Gumbo 2010-01-14 16:43:40

+0

@streetparade,他們呢?正如你所看到的,結果就像OP的意圖一樣。將值插入新數組中不會有衝突。 – 2010-01-14 16:43:46