Я бы начал с доступных чисел от $array2
.
$availables = [];
foreach ($array2 as $key => $value) {
if ($value == 'A') $availables[] = $key;
}
Теперь у нас есть два массива: $availables
и $array1
один, и нам нужно объединить их, где один представляетключи и другие значения нового массива.Это можно сделать с помощью этой функции:
http://nl1.php.net/manual/en/function.array-combine.php
Единственное, к чему мы должны быть осторожны, это размер массивов, поэтому:
$size1 = count($array1);
$size2 = count($availables);
if ($size1 > $size2) $array1 = array_slice($array1,0,$size2);
if ($size2 > $size1) $availables = array_slice($availables,0,$size1);
и затем мы можем объединить их:
$array3 = array_combine($availables,$array1);
См .: https://eval.in/1056040
Было бы лучше поместить это в функцию или метод, чтобы изменения в массивах невлияет на исходные массивы.
Есть, конечно, множество других способов сделать последние два шага, например:
$array3 = [];
foreach ($array1 as $key => $number)
{
if (!isset($availables[$key])) break;
$array3[$availables[$key]] = $number;
}
См .: https://eval.in/1056044