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 に答える