Sort two coupled arrays
am 07.04.2010 22:09:47 von TedD
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
)
Note: This is a descending-sort of Array 1 while being coupled to
index of Array 2. In other words, the order of Array 2 depends upon
the order of Array 1 -- the two arrays are coupled.
I've solved this problem, but my solution is pretty lame. There has
to be a better/slicker way.
Suggestions?
Cheers,
tedd
--
-------
http://sperling.com http://ancientstones.com http://earthstones.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: Sort two coupled arrays
am 07.04.2010 22:26:26 von Piero Steinger
Am 07.04.2010 22:09, schrieb tedd:
> 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
> )
>
> Note: This is a descending-sort of Array 1 while being coupled to
> index of Array 2. In other words, the order of Array 2 depends upon
> the order of Array 1 -- the two arrays are coupled.
>
> I've solved this problem, but my solution is pretty lame. There has to
> be a better/slicker way.
>
> Suggestions?
>
> Cheers,
>
> tedd
array_combine($key_array, $value_array)
:)
-- Piero
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: Sort two coupled arrays
am 07.04.2010 22:36:50 von Mattias Thorslund
Piero Steinger wrote:
> Am 07.04.2010 22:09, schrieb tedd:
>
>> 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
>> )
>>
>> Note: This is a descending-sort of Array 1 while being coupled to
>> index of Array 2. In other words, the order of Array 2 depends upon
>> the order of Array 1 -- the two arrays are coupled.
>>
>> I've solved this problem, but my solution is pretty lame. There has to
>> be a better/slicker way.
>>
>> Suggestions?
>>
>> Cheers,
>>
>> tedd
>>
>
>
> array_combine($key_array, $value_array)
>
> :)
>
> -- Piero
>
And then:
krsort($combined_array);
Cheers,
Mattias
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: Sort two coupled arrays
am 07.04.2010 23:02:02 von Paul M Foster
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
> )
>
> Note: This is a descending-sort of Array 1 while being coupled to
> index of Array 2. In other words, the order of Array 2 depends upon
> the order of Array 1 -- the two arrays are coupled.
>
> I've solved this problem, but my solution is pretty lame. There has
> to be a better/slicker way.
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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: Sort two coupled arrays
am 07.04.2010 23:35:09 von Andrew Ballard
On Wed, Apr 7, 2010 at 5:02 PM, Paul M Foster wro=
te:
> 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] =3D> 75
>> Â Â [2] =3D> 31
>> Â Â [3] =3D> 31
>> Â Â [4] =3D> 31
>> Â Â [5] =3D> 40
>> )
>>
>> Array 2
>> (
>> Â Â [1] =3D> Personal Email
>> Â Â [2] =3D> Personal Phone
>> Â Â [3] =3D> Web site
>> Â Â [4] =3D> Text Message
>> Â Â [5] =3D> USPS mail
>> )
>>
>> After the operation, I want this:
>>
>> Array
>> (
>> Â Â [75] =3D> Personal Email
>> Â Â [40] =3D> USPS mail
>> Â Â [31] =3D> Personal Phone
>> Â Â [31] =3D> Web site
>> Â Â [31] =3D> 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.
$a =3D array
(
1 =3D> '75',
2 =3D> '31',
3 =3D> '31',
4 =3D> '31',
5 =3D> '40',
);
$b =3D array
(
1 =3D> 'Personal Email',
2 =3D> 'Personal Phone',
3 =3D> 'Web site',
4 =3D> 'Text Message',
5 =3D> 'USPS mail',
);
$x =3D array_combine($a, $b);
var_export($x);
/*
array (
75 =3D> 'Personal Email',
31 =3D> 'Text Message',
40 =3D> 'USPS mail',
)
*/
echo "\n";
krsort($x);
var_export($x);
/*
array (
75 =3D> 'Personal Email',
40 =3D> 'USPS mail',
31 =3D> 'Text Message',
)
*/
?>
Andrew
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: Sort two coupled arrays
am 08.04.2010 00:17:26 von ahlin.hans
Try this insted
array(
[0]=3D>array( [0]=3D>75, [1] =3D> Personal Email)
[1]=3D>array( [0]=3D>31, [1] =3D> Personal Phone)
[2]=3D>array( [0]=3D>31, [1] =3D> Web site)
[3]=3D>array( [0]=3D>31, [1] =3D> Text Message)
[4]=3D>array( [0]=3D>40, [1] =3D> USPS mail)
MvH / Hans Ã
hlin
Tel: +46761488019
http://www.kronan-net.com/
irc://irc.freenode.net:6667 - TheCoin
2010/4/7 tedd :
> Hi gang:
>
> Here's the problem -- I want to sort and combine two arrays into one sort=
ed
> array. Here's a real-world example:
>
> Array 1
> (
> Â Â [1] =3D> 75
> Â Â [2] =3D> 31
> Â Â [3] =3D> 31
> Â Â [4] =3D> 31
> Â Â [5] =3D> 40
> )
>
> Array 2
> (
> Â Â [1] =3D> Personal Email
> Â Â [2] =3D> Personal Phone
> Â Â [3] =3D> Web site
> Â Â [4] =3D> Text Message
> Â Â [5] =3D> USPS mail
> )
>
> After the operation, I want this:
>
> Array
> (
> Â Â [75] =3D> Personal Email
> Â Â [40] =3D> USPS mail
> Â Â [31] =3D> Personal Phone
> Â Â [31] =3D> Web site
> Â Â [31] =3D> Text Message
> )
>
> Note: This is a descending-sort of Array 1 while being coupled to index o=
f
> Array 2. In other words, the order of Array 2 depends upon the order of
> Array 1 -- the two arrays are coupled.
>
> I've solved this problem, but my solution is pretty lame. There has to be=
a
> better/slicker way.
>
> Suggestions?
>
> Cheers,
>
> tedd
> --
> -------
> http://sperling.com  http://ancientstones.com  http://earthston=
es.com
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: Sort two coupled arrays {my solution]
am 08.04.2010 00:29:43 von TedD
At 5:35 PM -0400 4/7/10, Andrew Ballard wrote:
>On Wed, Apr 7, 2010 at 5:02 PM, Paul M Foster wrote:
>Array indexes have to be unique regardless of whether they are numeric
>or strings.
Ahhh, so you start to see the problem, eh?
Let's look at the problem again (a vote collection problem):
Array 1
(
[1] => 75
[2] => 31
[3] => 31
[4] => 31
[5] => 40
)
Array 1 is an array that contains the count of votes ($votes[] ) for
the index. IOW, index 1 received 75 votes.
Array 2
(
[1] => Personal Email
[2] => Personal Phone
[3] => Web site
[4] => Text Message
[5] => USPS mail
)
Array 2 is an array that contains the names for the items ($items[] )
voted upon. As such, index 1 (Personal Email) received 75 votes.
Now, I have this data in two different arrays and I wanted to combine
the data into one array and then preform a descend sort.
This is the way I solved it:
$final = array();
for($i =1; $i <=5; $i++)
{
$final[$i][] = $votes[$i];
$final[$i][] = $items[$i];
}
echo("");
echo('
');
print_r($final);
echo('
');
array_multisort($final, SORT_DESC);
echo('
');
print_r($final);
echo('
');
echo("
");
I was hoping that someone might present something clever.
Cheers,
tedd
--
-------
http://sperling.com http://ancientstones.com http://earthstones.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php