12. Data types Boolean (true or false) $variable = false; // $variable is false $variable = 0; // $variable is false $variable = true; // $variable is true $variable = 1; // $variable is true $variable = 5; // $variable is true Any non-zero value – true Integer Whole number, no fractional parts Maximum supported integer size is typicalla 2^31 Float Floating-point number -- contains fractional parts. String Sequence of character treated as a contiguous group http://www.php.net/manual
13. Data types (cont'd) Array Series of similar items. Index collection of data values. Each index (key) references to a corresponding value. Example: member[0] = "John"; member[1] = "Marry"; member[2] = "Suzzie"; http://www.php.net/manual
14. Data types (cont'd) Object Must be explicitly declared: Class -- attribute, function Class definition serves as template and cannot itself be manipulated. Instead, objects are created based on this template -- use 'new' keyword. soybean object is created and can then it attribute can be set by making us of the method setGroup() Class plant { private $group; function setGroup($status){ $this->group = $status; } } $soybean = new plant; $soybean->setGroup("dicots"); http://www.php.net/manual
15. Type casting Converting one type to the other example: $variable1 = 13; $variable2 = (double) $variable1; // 13.0 $variable1 = 4.2; $variable2 = (int) $variable1; // 4 (truncated, not round) http://www.php.net/manual
16. Variables Scope Local Variables A variable declared in a function is considered local. It can only be referenced in that function. When you exit the function in which a local variable has been declared, that variable and its corresponding value are destroyed. View this example $x = 2; function assignx() { $x = 0; echo "x inside function is $x <br>"; } assignx(); echo "x outside function is $x <br>"; http://www.php.net/manual
17. Variables Scope (cont'd) Global Variables Global variables can be accessed in any part of the program To modify global variabl, it must be explicitly declared to be a global in the function in which itis to be modified. View this example $x = 2; function assignx() { Global $x; $x = 0; echo "x inside function is $x <br>"; } assignx(); echo "x outside function is $x <br>"; http://www.php.net/manual
18. Variables Scope (cont'd) Static Variables Static variable does not lose its value when the function exists. View example without static View example with static function keep_track() { Static $count = 0; $count++; echo "$count <br>"; } keep_track(); keep_track(); keep_track(); http://www.php.net/manual
19. Variables Scope (cont'd) Superglobal Variables Predefined variables View example HTTP_USER_AGENT provide user's browser information For more examples of similar superglobal variables, go to: http://us3.php.net/manual/en/reserved.variables.server.php echo "Your browser is: $_SERVER['HTTP_USER_AGENT']"; http://www.php.net/manual
20. Operators For list of operators in php, go to: http://us3.php.net/manual/en/language.operators.php The list includes: arithmetic operators (*, /, +, -) string operator, ie concatenate with "." logical operators (&&, ||) equality operators (==, !=) http://www.php.net/manual
21. Control flow Conditional Controlling the flow of execution depending on the specified condition defined by expression Exercise 1: if statement – thermal time calculation Exercise file View output if (expression) { statement; } if (expression) { statement; } else { statement; } if (expression) { statement; } else if (expression) { statement; } else { statement; } http://www.php.net/manual
22. Control flow (cont'd) Conditional Use as variant of if-else combination when need to compare with large number of values switch($catagory) { case "1": statement1; break; case "2": statement2; break; case "3": statement3; break; case "4": statement4; break; } http://www.php.net/manual
23. Control flow (cont'd) While loop Specifies a condition that must be met before execution is terminated View example *We will be using 'while loop' in the final project exercise, to read weather data while (expression) { statements; } //Example: incremental value global $i; $i = 0; while ($i <= 5) { echo "$i <br>"; $i++; } http://www.php.net/manual
24. Control flow (cont'd) For loop Statement which allows code to be repeatedly executed View example *We will be using 'for loop' in the final project exercise, to perform calculation of cumulative thermal time for (expression1; expression2; expression3) { statements; } //Example: Incremental values global $i; for ($i=0; $i<=5; $i++) { echo "$i <br>"; } http://www.php.net/manual
25. Functions Consist of: (1) Function definition, (2) Function implementation View example function geo_distance_exercise view output function definition ------------------------ function function_name (parameters) { statements; } //function definition: converting degrees to radians function rad($deg_in) { $result = $deg_in *(pi()/180); return $result; } //function implementation: converting degrees to radians $radvalue = rad(30.0); echo "radvalue= $radvalue <br>"; //radvalue= 0.523598775598 function implementation --------------------------------- //value-returning function: $value = function_name(parameters); //non-returning function: function_name(parameters); http://www.php.net/manual
26. Arrays Series of similar items, accessible via index Index can be integer or string Array size is accessible by using 'count()' function //Basic syntax to access array's item $array_name[index] = array value Exercise 2: array Exercise file View output http://www.php.net/manual
27. File Server Client php codes files php codes files File Reading & Writing Steps: (1) Connecting file handler to a file (2) Capturing file content (3) Closing file (ending file handler connection to a file) http://www.php.net/manual
28. File Reading File Reading //assigning file handler to a file $file_handler = fopen("filename","mode"); //capturing file content $var = fgetcsv($file_handler,1000,","); //closing file fclose($file_handler); 1000 - maximum char per line mode: r = read only w = write only rt = read only, text file more on modes: http://us3.php.net/manual/en/function.fopen.php http://www.php.net/manual
29. File Reading (cont'd) File Reading Exercise Exercise file View output Create "input_files" directory in the ftp folder Create date.txt file with the following content: 10 20 30 30 45 http://www.php.net/manual
30. File Writing File Writing File Writing Exercise Exercise file View output Create "output_files" directory in the ftp folder //assigning file handler to a file $file_handler = fopen("filename","mode"); //writing file fwrite($filehandler,"$variable_to_write"); //closing file fclose($file_handler); mode: w = write only, wt = write only, text file, a = append more on modes: http://us3.php.net/manual/en/function.fopen.php http://www.php.net/manual
31. File Reading – Multiple Columns Multiple columns of data are common, ie: weather data File Reading Example – Multi Columns View code View output Trick: Create an intermediate 'clean' file (two reading steps) The 'clean' file has a consistent delimited, ie: one space User ereg_replace() function to clean extra white spaces $originalvar = "10 20"; $cleanvar = ereg_replace(' +', ' ', $originalvar); echo "$cleanvar"; // 10 20 10 20 20 40 30 60 30 60 45 90 File to read: data2.txt http://www.php.net/manual
33. Project Exercise Goal Reading weather file from long-term weather data from NASA Eventually calculate cumulative thermal time (GDU) for a user-given starting and ending dates Preparation Download new weather data from NASA site *, or use the existing weather data for Lincoln, NE * Required lat & long input Online resource for finding lat long of a location: itouchmap Save weather file as text file under your input_files folder http://www.php.net/manual
34.
35. Project Exercise 1 (cont'd) View output weather data: Lincoln, NE lat: 40.82, long: -96.65, 1997-2008 To skip a header line, you can assign it to a dummy variable $header = fgets($file_handler); Additional cleaning step would be needed if there is extra whie space to the left of the first column of the data. You can use the ltrim approach: Example: $array_output[$i] = ltrim($array_output[$i]); The goal is to read tmax and tmin. However, the data contains other weather variables (ie. solar radiation, rh, ect). You can assign dummy variables for the extra variables, or it doesn't hurt to assign each to uniqe variable (in case you would need it for something else) Particular important variable is tmean, not in the data, it's calculated as: Tmean = 0.5 * (Tmax + Tmin) http://www.php.net/manual
36.
37. Project Exercise 2 (cont'd) View output Table of day of year vs date Use practically all the component from the previous exercise For day selection combo box, you can use for loop, ie from i=1 to i=31 View Example The conversion from Date to DOY is needed because the user input is date while the weather data is index by year and DOY. View Date to DOY function Use if statement to identify starting point (year & doy) to start displaying the output, within a for loop going thru the whole index of data. ie: for ($i=0; $i<=$array_size; $i++) { if (($year_array[$i] == $yearinput) && ($doy_array[$i] >= $doyinput) && ($doy_array[$i] < $doyval+9)) { //put output statement here } } Use $_POST['var'] to capture form inputs $yearval = $_POST['year']; $monthval = $_POST['month']; $dayval = $_POST['day']; http://www.php.net/manual