我有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');
在此先感谢您的帮助,如果您认为有更好的方法,请告诉我们。谢谢!
答案 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
数组,并为每个值计算与关联数组的交集。