Comparing values from a while loop....

blink10
blink10 used Ask the Experts™
on
So i have a while loop which does math on several records.

After i have completed math on each record, how can i store each value to sort highest to lowest after the while loop has completed?
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Most Valuable Expert 2011
Top Expert 2016

Commented:
Put the values into an array, and you can sort them later.
Most Valuable Expert 2011
Top Expert 2016

Commented:
Check this link for the ways that PHP can sort arrays of information:
http://us3.php.net/manual/en/array.sorting.php

Commented:
Try something like this:

<?php
$magicNumber = 1;
$someNums = array(22,45,24,67);
$combinedArray = array();
$resultArray = array();

foreach($someNums as $someNum) {
  $result = $someNum + $magicNumber;
  $resultArray[] = $result;
  $combinedArray[] = array('result' => $result, 'origNum' => $someNum);
}

array_multisort($resultArray, SORT_DESC, $combinedArray);

print 'Drum roll please... ' . $combinedArray[0]['result'] . ' with an original number of ' . $combinedArray[0]['origNum'];

print '<pre>';
print_r($combinedArray);
print '</pre>';
?>

Open in new window


Let me know if that helps inspire something. :)

Best regards,

Chris
Angular Fundamentals

Learn the fundamentals of Angular 2, a JavaScript framework for developing dynamic single page applications.

Author

Commented:
Chris thanks for the solution, but I think I am very close to what i need with my code i wrote since i posted 20 minute ago.


One last problem i am having, i am creating an associate array, sorting it fine, but how can i make it so that i can just choose the lowest value without knowing the corresponding key.

In other words, i just need to lowest variable to do more math with, how can i just select it?

Commented:
Since you sorted it Descending (highest value first), try this:

<?php
print $myValues[count($myValues) - 1];
?>

Open in new window


That gives the last index.

Author

Commented:
No luck....

I used:
            foreach ($allcoupons as $key => $val) {
                 echo "$key = $val\n";
                  }

To determine my array after sorting, the above produced:
Round1 = 23.2 Round2 = 28.2744 Round3 = 38.88

Then I wrote:

            echo "<b>Best Price: </b>";
            
            print $allcoupons[count($allcoupons) - 1];

And got nothing, thoughts?
Commented:
Ahhh. Your keys are not numeric. That's why.

Try

<?php
print end($allcoupons);
?>

Open in new window


(never tried it before)
Most Valuable Expert 2011
Top Expert 2016
Commented:
Please read this over carefully.  If you do not know 100% what any of the functions accomplish, look them up on PHP.net and read the descriptions, inputs, outputs (return values) and user-contributed notes.  Then post back with any questions.
http://www.laprbass.com/RAY_temp_blink10.php

You might also want to get this book and give yourself a little time to work through it.  Very readable with great examples.
http://www.sitepoint.com/books/phpmysql4/

Best of luck with your project, ~Ray
<?php // RAY_temp_blink10.php
error_reporting(E_ALL);
echo "<pre>";

// FROM THE POST AT EE
// Round1 = 23.2 Round2 = 28.2744 Round3 = 38.88

// CREATE SOME SIMULATED TEST DATA
$arr = array
( 'Round1' => 23.2
, 'Round2' => 28.2744
, 'Round3' => 38.88
)
;

// SHOW THE SIMULATED TEST DATA
var_dump($arr);

// ORDER IT IN A RANDOM MANNER
shuffle($arr);

// SHOW THE SHUFFLED DATA
var_dump($arr);

// SORT BY VALUES DESCENDING
arsort($arr);
reset($arr);

// SHOW THE LARGEST VALUE IN THE ARRAY
var_dump(current($arr));

Open in new window

Author

Commented:
thanks for the help

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial