natsu Posted November 17, 2011 Share Posted November 17, 2011 I attempted to try to do what was in the comments, but I am not able to do it any help is appreciated <?php $a = array(9, 3, 1, 0, 99, 2, 5, 6, 32, 1, 55); $b = array(9, 18, 1, 0, 23, 22, 4, 6, 5, 32, 55); function getAverage () { echo "The average is " . array_sum($a) . "\n"; // Show the sum of the entire array (should display 19.36) } getAverage(); echo "<br><br>"; function highestValue() { echo $a[max]; // Show the index value of the highest number (should display 4) echo $a(max); // Show the value of index 4 (should display 99) echo $a[min]; // Show the index value of lowest number (should display 3) echo $a(min); // Show the value of index 4 (should display 0) } highestValue(); echo "<br><br>"; function displayMatch() { //Write a function that tests the values of both arrays. If the values at the same index match display the following: "The values at <insert the matching index> match." } displayMatch(); ?> Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/ Share on other sites More sharing options...
Pikachu2000 Posted November 17, 2011 Share Posted November 17, 2011 Start by reading the manual entries for array_sum, min and max. HINT: array_sum() doesn't return an average, and your syntax is wrong for min() and max(). EDIT While you're reading the manual, look at the list of array functions in the left sidebar, and see which one sounds like it would be used to find values that exist in more than one array for your last function. Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289077 Share on other sites More sharing options...
ManiacDan Posted November 17, 2011 Share Posted November 17, 2011 We will not do your homework for you, and repeated attempts to get us to help you circumvent your own education (which you or your parents are paying an obscene amount of money for) will likely result in a ban. We'd be happy to give you pointers, like Pikachu did, but show us that you've put forth at least a token effort first. Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289078 Share on other sites More sharing options...
natsu Posted November 17, 2011 Author Share Posted November 17, 2011 We will not do your homework for you, and repeated attempts to get us to help you circumvent your own education (which you or your parents are paying an obscene amount of money for) will likely result in a ban. We'd be happy to give you pointers, like Pikachu did, but show us that you've put forth at least a token effort first. Of course, btw I am not asking for answer's. I would like answer's like how Pikachu answerd me. That is perfect, I am going to look into that and re-post back here my results. Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289080 Share on other sites More sharing options...
natsu Posted November 17, 2011 Author Share Posted November 17, 2011 Ok I am going to tackle this piece by piece... <?php $a = array(9, 3, 1, 0, 99, 2, 5, 6, 32, 1, 55); function getAverage () { echo "The average is " . array_sum($a) . "\n"; } getAverage(); ?> I know that array_sum doesn't return the average, it returns the sum of the array. But even that is not displaying the total why? if I display the following line of code outside the function <?php echo "The average is " . array_sum($a) . "\n"; ?> It works, but if I write it inside the function, it does not work why? And to get the average, what is the term for diving by the number of value's in the array? Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289088 Share on other sites More sharing options...
xyph Posted November 17, 2011 Share Posted November 17, 2011 http://php.net/manual/en/language.variables.scope.php Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289090 Share on other sites More sharing options...
natsu Posted November 17, 2011 Author Share Posted November 17, 2011 Wow that's really interesting! <?php $a = array(9, 3, 1, 0, 99, 2, 5, 6, 32, 1, 55); function getAverage () { global $a; echo "The average is " . array_sum($a) . "\n"; } getAverage(); ?> I tried do divide that number by the amount of value's in the array like the following <?php echo "The average is " . array_sum($a)/11 . "\n"; // try 1 echo "The average is " . array_sum($a) . "\n"; // try 2 echo "array_sum($a)/11" ?> or is there some sort of code that knows how many elements are in the array? And take the array_sum and divide it by that. Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289093 Share on other sites More sharing options...
Pikachu2000 Posted November 17, 2011 Share Posted November 17, 2011 This is because of variable scope. With the exception of the globals/superglobals, values that are not assigned within a function, need to be passed to the function as parameters to make them available within it. It's also better not to echo from within a function, but to return the value from the function for use by the script. Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289094 Share on other sites More sharing options...
Psycho Posted November 17, 2011 Share Posted November 17, 2011 Variable scope is a simple concept but can be hard to understand at first if you have preconceived ideas that run counter to how it actually operates. Here are a couple of examples that should help function echoValue1() { echo "The value is: " . $a; } function echoValue2($var) { echo "The value is: " . $var; } $a = 'foo'; echoValue1($a); //Output: 'The value is: ' echoValue2($a); //Output: 'The value is: foo' Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289101 Share on other sites More sharing options...
natsu Posted November 17, 2011 Author Share Posted November 17, 2011 Yes I understand scope's now but I am trying to do http://www.phpfreaks.com/forums/index.php?topic=348076.msg1642492#msg1642492 Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289103 Share on other sites More sharing options...
Psycho Posted November 17, 2011 Share Posted November 17, 2011 I just did several google searches for queries related to php functions to find the number of elements in an array. And each one found the exact manual page to the function you need. Heck, I even used your exact text from above "how many elements are in the array" along with PHP and the first result is the answer you need. By the way, do not use global. Instead pass the variable to your function. Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289105 Share on other sites More sharing options...
natsu Posted November 17, 2011 Author Share Posted November 17, 2011 Thank you, I was able to do it <?php echo "The average is " . array_sum($a)/count($a) . "\n"; ?> As for the max and min's I know how to find the actual highest and lowest, but how would u indicate the index of the highest and lowest? <?php $a = array(9, 3, 1, 0, 99, 2, 5, 6, 32, 1, 55); echo max($a); echo "<br>"; echo min($a); ?> Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289113 Share on other sites More sharing options...
natsu Posted November 17, 2011 Author Share Posted November 17, 2011 Another problem I am having same trouble with scope for displaying max within a function, I tried global and return, and my output is ----> max(Array), it should show 99 <?php $a = array(9, 3, 1, 0, 99, 2, 5, 6, 32, 1, 55); function highestValue () { global $a; echo "The highest value is at index: (insert index), The value at index (insert index) is: max($a)"; } highestValue(); ?> OUTPUT: The highest value is at index: (insert index), The value at index (insert index) is: max(Array) I still don't know the code to display the index also Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289127 Share on other sites More sharing options...
Pikachu2000 Posted November 17, 2011 Share Posted November 17, 2011 You're telling it to literally echo "max($a)". You need to concatenate the function to the string, or assign the result of the function to a variable before the string, and use that variable in the string. Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289135 Share on other sites More sharing options...
natsu Posted November 17, 2011 Author Share Posted November 17, 2011 You're telling it to literally echo "max($a)". You need to concatenate the function to the string, or assign the result of the function to a variable before the string, and use that variable in the string. Sorry, but I dont understand what u mean by concentrating the function to the string. Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289138 Share on other sites More sharing options...
natsu Posted November 18, 2011 Author Share Posted November 18, 2011 I solved this. Thanks a lot Quote Link to comment https://forums.phpfreaks.com/topic/251334-working-with-functionsarraysmaxminmatching/#findComment-1289161 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.