1

我有 2 个数组已制成关联数组。我也有获胜者位置的组合 = 即“1,2”、“2,3”、“1,3”。我需要做的是用球衣号码替换位置号码,并放回与编写组合相同的配置。例如,我设置了我的球衣、位置、组合和关联数组:

$jersey = array('3','1','5','4');
$position = array('1','2','3','4');
$AssocArr = array_combine($position, $jersey);
$Combo = array('1,2','2,3','1,3');

我已经设置了一个函数来从键中获取值:

function getVals($finishPosMap, $keys) {
    foreach($keys as $key) {
         $output[] = $finishPosMap[$key];
    }
    return $output;
}

我遇到的问题是将它们放回带有值而不是键的数组中。这是我到目前为止所做的:

foreach($Combo as $set=>$pCombo) {
$com = array($set=>(explode(',', $pCombo)));
    foreach($com as $set=>$com){
    $c = getVals($AssocArr, $com);
    print_r($c);
    }
}

print_r 给了我:

array( [0] => 3 [1] => 1 ) 
array( [0] => 1 [1] => 5 )
array( [0] => 3 [1] => 5 )

谁能帮我把它的格式:

array(0 => '3,1', 1 => '1,5', 2 => '3,5');

提前感谢您的帮助,如果您认为有更好的方法,请告诉我。谢谢!

4

1 回答 1

0

我认为您缺少的是array_intersect_key(); 这应该这样做:

$jersey = array('3','1','5','4');
$position = array('1','2','3','4');
$AssocArr = array_combine($position, $jersey);
$Combo = array('1,2','2,3','1,3');

foreach ($Combo as &$value) {
    $values = explode(',', $value, 2);
    $new_values = array_intersect_key($AssocArr, array_flip($values));
    $value = join(',', $new_values);
}

print_r($Combo);

它就地更新$Combo数组,并为每个值计算与关联数组的交集。

演示

于 2013-10-28T05:47:05.037 回答