Jump to content

Sorting An Array ( Jumping Indexs )


lolacow

Recommended Posts

Hello, I am trying to sort an Array which I obtained from the explode function. But I want to sort it by either the index of if %2 == true or false.

I explain :

 

I would like to know if it is possible to sort the array ( see below ) in order so that not the only the time moves but the song tittle aswell.

Same thing for the tittle, if I want to sort using tittle, I want not only the tittle to move, but the times aswell.

 

This is my array un-sorted :

 

Array ( [0] => 3:31 [1] => Oops!...I Did It Again [2] => 3:23 [3] => Stronger [4] => 3:43 [5] => Don't Go Knocking' on My Door [6] => 4:25 [7] => (I Can't Get No) Satisfaction [8] => 3:50 [9] => Don't Let Me Be the Last to Know [10] => 3:36 [11] => What U See(Is What U Get) [12] => 3:26 [13] => Lucky [14] => 3:25 [15] => One Kiss from You [16] => 4:39 [17] => Where Are You Now [18] => 3:17 [19] => Can't Make You Love Me [20] => 4:29 [21] => When Your Eyes Say It [22] => 2:46 [23] => Dear Diary )

 

 

This is the result I get with asort() , and I do not want this. I would like the song to be indexed with their times but the times to be sorted ascendingly.

 

Array ( [18] => 3:17 [0] => 3:31 [10] => 3:36 [6] => 4:25 [7] => (I Can't Get No) Satisfaction [22] => 2:46 [2] => 3:23 [14] => 3:25 [12] => 3:26 [4] => 3:43 [8] => 3:50 [20] => 4:29 [16] => 4:39 [19] => Can't Make You Love Me [23] => Dear Diary [5] => Don't Go Knocking' on My Door [9] => Don't Let Me Be the Last to Know [13] => Lucky [15] => One Kiss from You [1] => Oops!...I Did It Again [3] => Stronger [11] => What U See(Is What U Get) [21] => When Your Eyes Say It [17] => Where Are You Now )

 

 

I don't think asort is what I should be using in here because I can't seems to find a way to make it sort correctly.

 

Thanks alot if anyone can help,

Marc

Link to comment
https://forums.phpfreaks.com/topic/270807-sorting-an-array-jumping-indexs/
Share on other sites

array_chunk it so you have a multi-dimensional array,

Array ( [0] => Array ( [0] => 3:31 [1] => Oops!...I Did It Again ) [1] => Array ( [0] => 3:23 [1] => Stronger ) ... )

 then usort it so the subarrays are sorted by time.

Array ( [0] => Array ( [0] => 2:46 [1] => Dear Diary ) [1] => Array ( [0] => 3:17 [1] => Can't Make You Love Me ) ... )

try

<?php
$a = array (
0 => '3:31',
1 => 'Oops!...I Did It Again',
2 => '3:23',
3 => 'Stronger',
4 => '3:43',
5 => 'Don\'t Go Knocking\' on My Door',
6 => '4:25',
7 => '(I Can\'t Get No) Satisfaction',
8 => '3:50',
9 => 'Don\'t Let Me Be the Last to Know',
10 => '3:36',
11 => 'What U See(Is What U Get)',
12 => '3:26',
13 => 'Lucky',
14 => '3:25',
15 => 'One Kiss from You',
16 => '4:39',
17 => 'Where Are You Now',
18 => '3:17',
19 => 'Can\'t Make You Love Me',
20 => '4:29',
21 => 'When Your Eyes Say It',
22 => '2:46',
23 => 'Dear Diary'
);
$b = array_chunk($a, 2);

sort($b );

echo '<pre>'.print_r($b, 1).'</pre>';

?>

RESULTS:

Array
(
[0] => Array
 (
	 [0] => 2:46
	 [1] => Dear Diary
 )

[1] => Array
 (
	 [0] => 3:17
	 [1] => Can't Make You Love Me
 )

[2] => Array
 (
	 [0] => 3:23
	 [1] => Stronger
 )

[3] => Array
 (
	 [0] => 3:25
	 [1] => One Kiss from You
 )

[4] => Array
 (
	 [0] => 3:26
	 [1] => Lucky
 )

[5] => Array
 (
	 [0] => 3:31
	 [1] => Oops!...I Did It Again
 )

[6] => Array
 (
	 [0] => 3:36
	 [1] => What U See(Is What U Get)
 )

[7] => Array
 (
	 [0] => 3:43
	 [1] => Don't Go Knocking' on My Door
 )

[8] => Array
 (
	 [0] => 3:50
	 [1] => Don't Let Me Be the Last to Know
 )

[9] => Array
 (
	 [0] => 4:25
	 [1] => (I Can't Get No) Satisfaction
 )

[10] => Array
 (
	 [0] => 4:29
	 [1] => When Your Eyes Say It
 )

[11] => Array
 (
	 [0] => 4:39
	 [1] => Where Are You Now
 )

)

And then I could just loop over it and merge it to get back to the original array ? Or am I mistaken, because after it got sorted, I would like to make it back into the original form because my function to print it as a table uses the others form. ( one dimension array )

 

And by the way, thanks alot for sharing ^-^, this is greatly apreciated.

Archived

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

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.