У меня есть массив $Percentages1
который я заказал в порядке убывания, используя arsort()
а затем я взял массив, содержащий новый порядок ключей, используя array_keys()
называемый $keyorder
Мой вопрос в том, как теперь изменить другой массив $Percentages2
на тот же самый порядок клавиш, что и $Percentages1
?
Любая помощь будет принята с благодарностью, спасибо большое!
Изменить - Код в соответствии с запросом:
//$Percentages1 before sort for example =
// Array ( [0] => 5.10 [1] => 1.52 [2] => 8.42 [3] => 1.11 [4] => 1.35 )
arsort($Percentages1);
//$Percentages1 after sort =
// Array ( [2] => 8.42 [0] => 5.10 [1] => 1.52 [4] => 1.35 [3] => 1.11 )
$keyorder = array();
//So $keyorder is =
// Array ( [0] => 2 [1] => 0 [2] => 1 [3] => 4 [4] => 3 )
$keyorder = array_keys($Percentages1);
//Now I want to do something here to rearrange a $Percentages2 array
//in the same index order as $keyorder.
//For example from this
// Array ( [0] => 2.50 [1] => 3.52 [2] => 9.42 [3] => 9.81 [4] => 0.35 )
//To...
// Array ( [2] => 9.42 [0] => 2.50 [1] => 3.52 [4] => 0.35 [3] => 9.81 )
Если вы не являетесь неблагоприятным для создания другой переменной массива, самым простым здесь является просто цикл над $keyorder
и добавление элементов в соответствующем ключе из $Percentages2
в новый массив ;.
// Sorted as you already have it...
$keyorder = array_keys($Percentages1);
// Final array
$output = array();
foreach ($keyorder as $key) {
$output[$key] = $Percentages2[$key];
}
// Don't need the source anymore
unset($Percentages2);
Их основной порядок, добавленный в $output
будет сохранен в конечном результате.
Учитывая ваши входные массивы, это дает
print_r($output);
Array
(
[2] => 9.42
[0] => 2.5
[1] => 3.52
[4] => 0.35
[3] => 9.81
)
Вам фактически не нужно использовать array_keys()
. После вызова arsort()
вы можете foreach
более отсортированные $Percentages1
и отсортировать по $output
по ключу:
// Skip array_keys, and read the sorted array directly
arsort($Percentages1);
foreach ($Percentages1 as $key => $value) {
// Same as before inside the loop
$output[$key] = $Percentages2[$key];
}
array_keys()
как я только что добавил. Если я придумаю способ использования встроенных функций array_*()
я опубликую его, но, честно говоря, я бы просто использовал цикл.