Eu tenho 2 matrizes, a primeira contém valores de objetos e a segunda contém seus IDs.
Nesta forma:
$values[0] applies to $ids[0]
$values[1] applies to $ids[1]
Eu preciso classificar primeiro array (usando sort ()) do menor para o maior (valores são ints) - Isso não é problema. O problema é que quando eu ordenar array com valores, perderei ID desse valor.
Minha pergunta é: como fazer isso
If $values[0] turns to $values[5], automatically turn $ids[0] to $ids[5]
obrigado
Atualizar:
Conteúdo de $ values e $ ids:
$values[0] = 1.5;
$values[1] = 2.4;
$values[2] = 15.7;
$values[3] = 11.7;
$values[4] = 4.8;
$values[5] = 0.4;
$ids[0] = 1;
$ids[1] = 2;
$ids[2] = 3;
$ids[3] = 4;
$ids[4] = 5;
$ids[5] = 6;
Respostas:
4 para resposta № 1Combine os arrays primeiro e, depois, classifique por chave:
$newArr = array_combine($ids, $values);
ksort($newArr);
1 para resposta № 2
Parece que você está procurando array_combine()
:
Exemplo
<?php
$ids = array(2, 1, 3); // IDs
$values = array(a, b, c); // Values
$array = array_combine($ids, $values); // Combine arrays as ID => Value
ksort($arrays); // Sort new array
print_r($array); // Echo array
Saída
Array
(
1 => b,
2 => a,
3 => c,
)
0 para resposta № 3
Siga o código abaixo ... não testei ... mas deve funcionar .... Fácil de entender ..
<?php
$count = count($values);
for($i = 0; $i<$count; $i++)
{
if($i == 0)
{
$sort1 = $values[$i];
$sort2 = $ids[$i];
$temp = 0;
}
if($sort1 > $values[$i])
{
$sort1 = $values[$i];
$sort2 = $ids[$i];
$temp_val = $values[$temp];
$temp_id = $ids[$temp];
$values["temp"] = $values[$i];
$ids["temp"] = $ids[$i];
$temp = $i;
$values[$i] = $temp_val;
$ids[$i] = $temp_id;
}
}
?>