Sort or display php array values as a bell curve
up vote
0
down vote
favorite
Just throwing this out there if anyone can find a solution. I have a PHP array and I want to sort it so the lower values are at the beginning and end and the higher values are in the middle, with the highest value being dead center (if count of values is odd of course), sort of like a bell curve...
php arrays sorting
add a comment |
up vote
0
down vote
favorite
Just throwing this out there if anyone can find a solution. I have a PHP array and I want to sort it so the lower values are at the beginning and end and the higher values are in the middle, with the highest value being dead center (if count of values is odd of course), sort of like a bell curve...
php arrays sorting
How does it decide which side the lower values go? What is your end goal?
– dmikester1
Nov 9 at 22:01
It doest matter what side the lowest value starts. Basically If I have an array like: 1,2,3,4,5,6,7. I want it sorted like: 1,3,5,7,6,4,2
– Andrew Brown
Nov 9 at 22:03
Could you provide a sample array of values?
– rpm192
Nov 9 at 22:03
[1]=>10 [2] = 20 [3] => 30 [4] => 40 [5] => 50 SHOULD BE [1]=>10 [3] => 30 [5] => 50 [4] => 40 [2] = 20
– Andrew Brown
Nov 9 at 22:07
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Just throwing this out there if anyone can find a solution. I have a PHP array and I want to sort it so the lower values are at the beginning and end and the higher values are in the middle, with the highest value being dead center (if count of values is odd of course), sort of like a bell curve...
php arrays sorting
Just throwing this out there if anyone can find a solution. I have a PHP array and I want to sort it so the lower values are at the beginning and end and the higher values are in the middle, with the highest value being dead center (if count of values is odd of course), sort of like a bell curve...
php arrays sorting
php arrays sorting
asked Nov 9 at 21:58
Andrew Brown
368
368
How does it decide which side the lower values go? What is your end goal?
– dmikester1
Nov 9 at 22:01
It doest matter what side the lowest value starts. Basically If I have an array like: 1,2,3,4,5,6,7. I want it sorted like: 1,3,5,7,6,4,2
– Andrew Brown
Nov 9 at 22:03
Could you provide a sample array of values?
– rpm192
Nov 9 at 22:03
[1]=>10 [2] = 20 [3] => 30 [4] => 40 [5] => 50 SHOULD BE [1]=>10 [3] => 30 [5] => 50 [4] => 40 [2] = 20
– Andrew Brown
Nov 9 at 22:07
add a comment |
How does it decide which side the lower values go? What is your end goal?
– dmikester1
Nov 9 at 22:01
It doest matter what side the lowest value starts. Basically If I have an array like: 1,2,3,4,5,6,7. I want it sorted like: 1,3,5,7,6,4,2
– Andrew Brown
Nov 9 at 22:03
Could you provide a sample array of values?
– rpm192
Nov 9 at 22:03
[1]=>10 [2] = 20 [3] => 30 [4] => 40 [5] => 50 SHOULD BE [1]=>10 [3] => 30 [5] => 50 [4] => 40 [2] = 20
– Andrew Brown
Nov 9 at 22:07
How does it decide which side the lower values go? What is your end goal?
– dmikester1
Nov 9 at 22:01
How does it decide which side the lower values go? What is your end goal?
– dmikester1
Nov 9 at 22:01
It doest matter what side the lowest value starts. Basically If I have an array like: 1,2,3,4,5,6,7. I want it sorted like: 1,3,5,7,6,4,2
– Andrew Brown
Nov 9 at 22:03
It doest matter what side the lowest value starts. Basically If I have an array like: 1,2,3,4,5,6,7. I want it sorted like: 1,3,5,7,6,4,2
– Andrew Brown
Nov 9 at 22:03
Could you provide a sample array of values?
– rpm192
Nov 9 at 22:03
Could you provide a sample array of values?
– rpm192
Nov 9 at 22:03
[1]=>10 [2] = 20 [3] => 30 [4] => 40 [5] => 50 SHOULD BE [1]=>10 [3] => 30 [5] => 50 [4] => 40 [2] = 20
– Andrew Brown
Nov 9 at 22:07
[1]=>10 [2] = 20 [3] => 30 [4] => 40 [5] => 50 SHOULD BE [1]=>10 [3] => 30 [5] => 50 [4] => 40 [2] = 20
– Andrew Brown
Nov 9 at 22:07
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
Here's one way:
First sort the array of values. sort()
will reindex the array.
sort($values);
Separate alternating array elements into two halves based on the index mod 2.
foreach ($values as $i => $x) {
$sides[$i % 2] = $x;
}
(well, not exactly halves if the array count is odd)
Form the result by merging one half with the reverse of the other half.
$result = array_merge($sides[0], array_reverse($sides[1]));
Thats slick man! Good job.
– Andrew Brown
Nov 9 at 22:36
@AndrewBrown Thanks!
– Don't Panic
Nov 9 at 23:05
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
Here's one way:
First sort the array of values. sort()
will reindex the array.
sort($values);
Separate alternating array elements into two halves based on the index mod 2.
foreach ($values as $i => $x) {
$sides[$i % 2] = $x;
}
(well, not exactly halves if the array count is odd)
Form the result by merging one half with the reverse of the other half.
$result = array_merge($sides[0], array_reverse($sides[1]));
Thats slick man! Good job.
– Andrew Brown
Nov 9 at 22:36
@AndrewBrown Thanks!
– Don't Panic
Nov 9 at 23:05
add a comment |
up vote
2
down vote
accepted
Here's one way:
First sort the array of values. sort()
will reindex the array.
sort($values);
Separate alternating array elements into two halves based on the index mod 2.
foreach ($values as $i => $x) {
$sides[$i % 2] = $x;
}
(well, not exactly halves if the array count is odd)
Form the result by merging one half with the reverse of the other half.
$result = array_merge($sides[0], array_reverse($sides[1]));
Thats slick man! Good job.
– Andrew Brown
Nov 9 at 22:36
@AndrewBrown Thanks!
– Don't Panic
Nov 9 at 23:05
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
Here's one way:
First sort the array of values. sort()
will reindex the array.
sort($values);
Separate alternating array elements into two halves based on the index mod 2.
foreach ($values as $i => $x) {
$sides[$i % 2] = $x;
}
(well, not exactly halves if the array count is odd)
Form the result by merging one half with the reverse of the other half.
$result = array_merge($sides[0], array_reverse($sides[1]));
Here's one way:
First sort the array of values. sort()
will reindex the array.
sort($values);
Separate alternating array elements into two halves based on the index mod 2.
foreach ($values as $i => $x) {
$sides[$i % 2] = $x;
}
(well, not exactly halves if the array count is odd)
Form the result by merging one half with the reverse of the other half.
$result = array_merge($sides[0], array_reverse($sides[1]));
answered Nov 9 at 22:22
Don't Panic
27.8k93554
27.8k93554
Thats slick man! Good job.
– Andrew Brown
Nov 9 at 22:36
@AndrewBrown Thanks!
– Don't Panic
Nov 9 at 23:05
add a comment |
Thats slick man! Good job.
– Andrew Brown
Nov 9 at 22:36
@AndrewBrown Thanks!
– Don't Panic
Nov 9 at 23:05
Thats slick man! Good job.
– Andrew Brown
Nov 9 at 22:36
Thats slick man! Good job.
– Andrew Brown
Nov 9 at 22:36
@AndrewBrown Thanks!
– Don't Panic
Nov 9 at 23:05
@AndrewBrown Thanks!
– Don't Panic
Nov 9 at 23:05
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53233774%2fsort-or-display-php-array-values-as-a-bell-curve%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
How does it decide which side the lower values go? What is your end goal?
– dmikester1
Nov 9 at 22:01
It doest matter what side the lowest value starts. Basically If I have an array like: 1,2,3,4,5,6,7. I want it sorted like: 1,3,5,7,6,4,2
– Andrew Brown
Nov 9 at 22:03
Could you provide a sample array of values?
– rpm192
Nov 9 at 22:03
[1]=>10 [2] = 20 [3] => 30 [4] => 40 [5] => 50 SHOULD BE [1]=>10 [3] => 30 [5] => 50 [4] => 40 [2] = 20
– Andrew Brown
Nov 9 at 22:07