2010-12-16 111 views
0

的價值,發現兩個數組映射元素的值 有一個數組:從一個陣列,找了兩個陣列映射,從一個數組元素

$A = Array ([0] => 0;0 
       [1] => 0;1 
       [2] => 1;0) 

將獲得新的一個這樣的: 我會喜歡這個

function split_map_arr($A){ 
     TODO 
    } 

功能TODO事情會返回兩個數組這樣

 idxs_main=array(0,1) 
     idxs_sub=array(array(0,1), 
         array(1) 
        ) 

我該怎麼做?

+5

我不明白你的要求,你的代碼是充滿語法錯誤的。先解決它們,因爲很難弄清楚你的意圖。 – Palantir 2010-12-16 08:39:40

+0

你能重新表達我不明白的問題 – RageZ 2010-12-16 08:40:27

+0

@Palantir:看起來像僞代碼 – BoltClock 2010-12-16 08:57:31

回答

2

如果我正確破譯你的問題......

function split_map_arr($A){ 
    $idxs_main = array(); 
    $idxs_sub = array(); 
    foreach ($A as $a) { 
    list($main, $sub) = explode(';',$a); 
    if (array_key_exists($main, $idxs_main)) { 
     $idxs_sub[array_search($main, $idxs_main)][] = $sub; 
    } else { 
     $idxs_main[][] = $main; 
     $idxs_sub[][] = $sub; 
    } 
    } 
    return array($idxs_main, $idxs_sub); 
} 

// usage 
$A = array(0 => '0;0', 1 => '0;1', 2 => '1;0'); 
list($idxs_main, $idxs_sub) = split_map_arr($A);