#### Archived

This topic is now archived and is closed to further replies.

# sorting arrays

## Recommended Posts

Sure this is easy BUT i just can't find the solution.

OK i have 2 arrays.

arr1 = 5,7,1,4,6,3,2;

arr2 = 3,5,4,7;

I want to use the order of values in arr1 to sort the order of arr2.

the result would yield:-

arr2 = 5,7,4,3

any help appreciated - and I'm sure I will be wearing a dunce hat when someone shows how simple it is!!!!!

Brain just not working today....

##### Share on other sites
this is what ive got so far:

[code]
<?php
\$arr1 = array('5','7','1','4','6','3','2');
\$arr2 = array('3','5','4','7');

foreach(\$arr2 as \$check)
{
\$i = 0;
while(\$i < count(\$arr1))
{
if(\$check == \$arr1[\$i]){
\$newarray[\$i] = \$check;
}
\$i++;
}
}
ksort(\$newarray);
print_r(\$newarray);
?>
[/code]

The output from that is:
Array ( [0] => 5 [1] => 7 [3] => 4 [5] => 3 )

Im just trying to figure out how to re-do the keys so you have 0,1,2,3 as keys instead. Im sure theres a function somewhere...

##### Share on other sites
might be an easier way, but i created a second array with keys and used array_combine:

[code]
<?php
\$arr1 = array('5','7','1','4','6','3','2');
\$arr2 = array('3','5','4','7');

foreach(\$arr2 as \$check)
{
\$i = 0;
while(\$i < count(\$arr1))
{
if(\$check == \$arr1[\$i]){
\$newarray[\$i] = \$check;
}
\$i++;
}
}
ksort(\$newarray);
\$i=0;
while(\$i< count(\$newarray)){
\$keys[\$i]= \$i;
\$i++;
}
\$newarray = array_combine (\$keys, \$newarray);
print_r(\$newarray);

?>
[/code]

##### Share on other sites
You're a gentleman and a scholar....

cheers mate.

##### Share on other sites
No problem, it was a nice thing to solve :)