Создать поиск = & gt; замена массива по пересечению ключей

У меня есть этот простой код 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",
];

Как мне нужно изменить мой код сейчас, чтобы он делал это так?

3

Решение

Начните с нормализации массивов

$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 будет иметь правильные значения и порядок.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]