Re: Sort two coupled arrays
| From: | Andrew Ballard | Date: | Wed, 07 Apr 2010 21:35:09 +0000 |
| Subject: | Re: Sort two coupled arrays | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-303887@lists.php.net to get a copy of this message | ||
On Wed, Apr 7, 2010 at 5:02 PM, Paul M Foster <paulf@quillandmouse.com> wrote:
> On Wed, Apr 07, 2010 at 04:09:47PM -0400, tedd wrote:
>
>> Hi gang:
>>
>> Here's the problem -- I want to sort and combine two arrays into one
>> sorted array. Here's a real-world example:
>>
>> Array 1
>> (
>> [1] => 75
>> [2] => 31
>> [3] => 31
>> [4] => 31
>> [5] => 40
>> )
>>
>> Array 2
>> (
>> [1] => Personal Email
>> [2] => Personal Phone
>> [3] => Web site
>> [4] => Text Message
>> [5] => USPS mail
>> )
>>
>> After the operation, I want this:
>>
>> Array
>> (
>> [75] => Personal Email
>> [40] => USPS mail
>> [31] => Personal Phone
>> [31] => Web site
>> [31] => Text Message
>> )
[snip]
> Just so I understand the way arrays work in PHP (gee, I *thought* I
> did!), as you add the final three elements in the final array, won't
> they overwrite each other? I was under the impression that a
> *numerically* indexed array has a constraint that the numeric indexes be
> unique, if not contiguous. Am I wrong? If so, please provide a
> reference. Or are those "numbers" really strings?
>
> Paul
>
> --
> Paul M. Foster
Array indexes have to be unique regardless of whether they are numeric
or strings.
<?php
$a = array
(
1 => '75',
2 => '31',
3 => '31',
4 => '31',
5 => '40',
);
$b = array
(
1 => 'Personal Email',
2 => 'Personal Phone',
3 => 'Web site',
4 => 'Text Message',
5 => 'USPS mail',
);
$x = array_combine($a, $b);
var_export($x);
/*
array (
75 => 'Personal Email',
31 => 'Text Message',
40 => 'USPS mail',
)
*/
echo "\n";
krsort($x);
var_export($x);
/*
array (
75 => 'Personal Email',
40 => 'USPS mail',
31 => 'Text Message',
)
*/
?>
Andrew