创建搜索=>按键交叉替换数组

时间:2016-03-26 04:07:14

标签: php arrays string intersection

我有这个简单的PHP代码:

<?php

    $string = "M - T - A - C - B - N - Z.";

    $arrayOne  = ["A", "B", "C", "D"];
    $arrayTwo  = ["D", "E", "F", "G"];


    $length = count($arrayOne);
    for ($i = 0; $i < $length; $i++){
        $replacement[$arrayOne[$i]] = $arrayTwo[$i];
    }

    echo strtr($string, $replacement);

?>

这里我只使用两个数组中的数字索引来创建替换数组,我可以在strtr()中使用。

$replacement = [
    "A" => "D",
    "B" => "E",
    "C" => "F",
    "D" => "G",
];

现在我想做同样的事情,只是为了两个数组具有相同键的值。

所以,如果我有:

$k_1  = [ 
    "hat" => "M",
    "new" => "A",
    "bad" => "B",
    "hot" => "C",
    "big" => "D"    
];


$k_2  = [
    "new" => "D",
    "bad" => "E",
    "hot" => "F",
    "err" => "K",
    "big" => "G"
];

我们通过两个数组中的键获得以下交集:

[
    "new",
    "bad",
    "hot",
    "big",
] 

现在我想再次使用第一个数组中的值作为搜索,第二个数组值作为替换,例如

$replacement = [
    "A" => "D",
    "B" => "E",
    "C" => "F",
    "D" => "G",
];

我现在需要如何修改我的代码,它会这样做吗?

1 个答案:

答案 0 :(得分:1)

首先规范化数组

$kk_1=array_intersect($k_1, $k_2);
$kk_2=array_intersect($k_2, $kk_1);
ksort($kk_1);
ksort($kk_2);
$k_1=array_values($kk_1);
$k_2=array_values($kk_2);

然后像以前一样继续 - $k_1$k_2将拥有正确的值和顺序。