场所的关联数组

时间:2013-10-28 05:34:11

标签: php arrays associative-array

我有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');

在此先感谢您的帮助,如果您认为有更好的方法,请告诉我们。谢谢!

1 个答案:

答案 0 :(得分: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数组,并为每个值计算与关联数组的交集。

Demo