从一个数组中,找到映射元素值的两个数组

时间:2010-12-16 08:33:41

标签: php arrays

从一个数组中,找到映射元素值的两个数组     有一个数组:

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

会像这样获得新的: 我要去TODO这样的事情

    function split_map_arr($A){
      TODO
    }

函数将返回两个这样的数组

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

我怎么能这样做?

1 个答案:

答案 0 :(得分: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);