2010-01-14 106 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