从一个数组中,找到映射元素值的两个数组 有一个数组:
$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)
)
我怎么能这样做?
答案 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);