PHP Basics - 2 PHP Functions: Testing Variables As the appearance of the variable does not show what variable it contains , many times in your scripts you won't be sure if the variable contains a value, or even if it exists at all . isset( ) This function tests whether a variable has any value, including an empty string. It returns a value of either true or false. empty( ) It is same as isset( ) function. It tests true if a variable is not set, contains an empty string or has a value of 0. is_int( ) This tests whether a variable is an integer. Example: <?php $a = 10; echo isset($a); echo "<br/>"; echo is_int($a); ?> 2 Testing Variables is_double( ) It tests whether a variable is floating-point number. is_string( ) It tests whether a variable is a text string. is_array( ) It tests whether a variable is an array. is_bool( ) It tests whether a variable is boolean. is_object( ) Returns true if the variable is an object. gettype( ) It will tell you the type of variable you have. 3 Changing Variable Types PHP does not require explicit type definition in variable declaration. A variable's type is determined by the context in which that variable is used. If you assign a string value to variable $my_var, $my_var becomes a string. If you then assign an integer value to $my_var, it becomes an integer. There are ways to change the type of any variable: Using settype( ) Type casting Using the functions intval( ), doubleval( ) and stringval( ) 4 Changing Variable Types: settype Example: <?php $my_var = 1995; echo $my_var . "<br/>"; echo "The variable \$my_var is now a " . gettype($my_var) . "<br/>"; settype($my_var,"string"); echo $my_var . "<br/>"; echo "The variable \$my_var is now a " . gettype($my_var) . "<br/>"; ?> Output: 1995 The variable $my_var is now a integer 1995 The variable $my_var is now a string 5 Changing Variable Types: settype Possibles values for the settype() function are: "boolean" (or, since PHP 4.2.0, "bool") "integer" (or, since PHP 4.2.0, "int") "float" (only possible since PHP 4.2.0, for older versions use the deprecated variant "double") "string" "array" "object" "null" (since PHP 4.2.0) The settype() function returns TRUE on success or FALSE on failure. This is important, for example, if you want to conditionally execute some code based on the success or failure of the settype() function. 6 Changing Variable Types: Type Casting Type casting in PHP works much as it does in C: the name of the desired type is written in parentheses before the variable which is to be cast. For example: <?php $a = echo $b = echo ?> 1; "\$a is a " . gettype($a) . "<br />\n"; (string) $a; "\$b is a " . gettype($b) . "<br />\n"; The approach above forces the variable value to change to the type indicated prior to assignment and only for the purposes of the assignment operation. A cast does not change the variable’s type permanently. 7 Type Casting (ctd) The casts allowed in PHP are: (int), (integer) - cast to integer (bool), (boolean) - cast to boolean (float), (double), (real) - cast to float (string) - cast to string (array) - cast to array (object) - cast to object Some alternative casts are shown above. 8 PHP Variable Handling Here are some examples that illustrate PHP's flexibility with respect to variable type: <?php $my_var1 = 20; echo $my_var1 . "<br>"; echo "The variable \$my_var1 is a " . gettype($my_var1) . "<br>"; $my_var2 = "5"; echo $my_var2 . "<br>"; echo "The variable \$my_var2 is a " . gettype($my_var2) . "<br>"; $my_var3 = $my_var1 * $my_var2; echo $my_var3 . "<br>"; echo "The variable \$my_var3 is a " . gettype($my_var3) . "<br>"; $my_var4 = $my_var1 . $my_var2; echo $my_var4 . "<br>"; echo "The variable \$my_var4 is a " . gettype($my_var4) . "<br>"; ?> Basically, PHP assumes that you know what you want to do and changes the variable type to allow you to do it. 9 PHP Variable Variables! Sometimes it is convenient to be able to have variable variable names. That is, a variable name which can be set and used dynamically. A normal variable is set with a statement such as: $a = "hello"; A variable variable takes the value of a variable and treats that as the name of a variable. In the above example, hello, can be used as the name of a variable by using two dollar signs. i.e. $$a = "world"; Creates a variable called $hello=“world” 10 PHP Variable Variables (ctd) At this point two variables have been defined and stored in the PHP symbol tree: $a with contents "hello" and $hello with contents "world". Therefore, this statement: echo "$a ${$a}"; produces the exact same output as: echo "$a $hello"; i.e. they both produce: hello world. •In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write $$a[1] then the parser needs to know if you meant to use $a[1] as a variable, or if you wanted $$a as the variable and then the [1] index from that variable. •The syntax for resolving this ambiguity is: ${$a[1]} for the first case and ${$a}[1] for the second. 11 PHP Operators There are many operators used in PHP, just as is the case in other programming languages. To make it easier to learn them all, we have separated the PHP operators into categories as follows: Arithmetic Operators Assignment Operators Comparison Operators Logical Operators String Operators Bitwise Operators 12 Arithmetic Operators Artihmetic operators generally mirror those available in C. Operator Description Example Result $a + $b Addition 4 $a - $b Subtraction $a * $b Multiplication $a / $b Division $a % $b Modulus (division remainder) $a++ Increment $a-- Decrement $a=2 $a+2 $a=2 5-$a $a=4 $a*5 15/5 5/2 5%2 10%8 10%2 $a=5 $a++ $a=5 $a-- 3 20 3 2.5 1 2 0 $a=6 $a=4 13 Arithmetic Operators: Example The PHP code segment below illustrates some of the basic arithmetic operations. <?php $addition = 2 + 4; $subtraction = 6 - 2; $multiplication = 5 * 3; $division = 15 / 3; $modulus = 5 % 2; echo "addition: 2 + 4 = " . $addition . "<br />"; echo "subtraction: 6 - 2 = " . $subtraction . "<br />"; echo "multiplication: 5 * 3 = " . $multiplication . "<br />“; echo "division: 15 / 3 = " . $division . "<br />"; echo "modulus: 5 % 2 = " . $modulus . "<br />"; ?> 14 Arithmetic Operators: Example You can also specify whether you want the increment to occur while the line of code is being executed or after the line has executed. The PHP code segment below illustrates the difference. <?php $x = echo echo echo echo ?> 4; "The "<br "<br "<br value of x with /> The value of /> The value of /> The value of post-incrementing = " . $x++; x after the post-increment is " . $x; $x = 4; x with with pre-incrementing = " . ++$x; x after the pre-increment is " . $x; 15 Assignment Operators The basic assignment operator is the equal symbol ( = ). This operator can be "read" as "the left operand is assigned the value of the expression on the right" or "the left operand gets set to the value of the expression on the right." The table below lists all of the PHP operators that combine assignment with arithmetic. Operator Example Is The Same As = $x = $y; $x = $y; += $x += $y; $x = $x + $y; -= $x -= $y; $x = $x - $y; *= $x *= $y; $x = $x * $y; /= $x /= $y; $x = $x / $y; %= $x %= $y; $x = $x % $y; 16 Assignment Operators: Example Example: <?php $counter = 8; $counter = $counter + 1; echo $counter; ?> However, there is a shorthand version for incrementing that uses one of the assignment operators above. We could write: <?php $counter = 8; $counter += 1; echo $counter; ?> 17 Assignment Operators: Example To add one to a variable or "increment" we could use the ++ operator. Thus, we have three possible approaches to incrementing: <?php $x = 15; $x++; echo $x; $x += 1; echo $x; $x = $x + 1; echo $x; ?> PHP's assignment operators enable you to create more concise code. The following example illustrates this feature. <?php $my_var $my_var $my_var $my_var $my_var $my_var ?> = 12; += 14; // $my_var now equals 26 -= 12; // $my_var now equals 14 *= 10; // $my_var now equals 140 /= 7; // $my_var now equals 20 %= 6; // $my_var now equals 2 18 Assignment Operators: Example An assignment expression is replaced by its value. Thus, the value of the assignment expression $a = 3 is 3. This allows you to do some interesting things. Example: <?php /* note that $a and $b are used without declaration or initialization */ $a = ($b = 3) + 5; // $b has been set to 3, $a has been set to 8 echo "\$a = $a <br/>\n"; echo "\$b = $b <br/>\n"; ?> 19 Comparison Operators Comparison operators are used to compare expressions (e.g., values, variables) in a Boolean manner. This means that an expression constructed with comparison operators will return either true or false. Operator Description Example $a == $b is equal to 5==8 returns false $a === $b is identical to 8===8 returns true $a != $b is not equal 5!=8 returns true $a <> $b is not equal 5!=8 returns true $a !== $b is not identical 5!=="5" returns true $a > $b is greater than 5>8 returns false $a < $b is less than 5<8 returns true $a >= $b is greater than or equal to 5>=8 returns false $a <= $b is less than or equal to 5<=8 returns true 20 Comparison Operators (ctd) Comparison Operator Values: True will display as the integer one ( 1 ) and false will display as the empty string. The following values are evaluated as false: the integer zero ( 0 ) the float zero ( 0.0 ) the empty string ( "" ) the string zero ( "0" ) an array with zero elements an object with zero member variables NULL All other values are evaluated as true. 21 Logical Operators Logical operators allow you to combine the results of multiple comparison expressions to return a single value that evaluates to either true or false. Operator Name Example $a && $b AND TRUE if both $a and $b are TRUE $a=6; $b=3; ($a < 10 && $b > 1) returns true $a and $b AND TRUE if both $a and $b are TRUE $a=6; $b=3; ($a < 10 and $b > 1) returns true $a || $b OR TRUE if either $a or $b is TRUE $a=6; $b=3; ($a==5 || $b==3) returns true ($a==5 || $b==5) returns false $a or $b OR TRUE if either $a or $b is TRUE $a=6; $b=3; ($a==5 or $b==5) returns false $a xor $b XOR TRUE if either $a or $b is TRUE, but not both $a=6; $b=3; ($a>5 xor $b<5) returns false !$a NOT TRUE if $a is FALSE $a=6; $b=3; !($a==$b) returns true 22 String Operators PHP has only two string operators (actually, only one with the second being a derivative of the first). The string operators are shown in the table below. Operator Description Example $a . $b concatenation $a = "Hello "; $b = $a . "World!"; assigns "Hello World" to $b $a .= $b concatenation and assignment $a = "Hello "; $a .= "World!"; assigns "Hello World" to $a 23 Bitwise Operators Bitwise operators are used in connection with logical operations and binary math. These operators directly affect the binary or ASCII representations of stored data. Operator Description Result $a & $b AND Bits that are set in both $a and $b are set $a | $b OR Bits that are set in either $a or $b are set $a ^ $b XOR Bits that are set in $a or $b but not both are set ~ $a NOT Bits that are set in $a are not set, and vice versa $a << $b shift left Shift the bits of $a $b steps to the left (each step means "multiply by two") $a >> $b shift right Shift the bits of $a $b steps to the right (each step means "divide by two") 24 Operator Precedence The order of precedence establishes a "priority" for operators, where those with the highest priority will be evaluated first. When there are several operators of the same priority, they will be processed from left to right if they are left associative, and right to left if they are right associative. Associativity non-associative non-associative right left left left non-associative non-associative left left left left left right left left left Operators Additional Information ++ -~ - (int) (float) (string) (array) (object) (bool) increment/decrement ! logical arithmetic arithmetic and string bitwise comparison comparison bitwise and references bitwise bitwise logical logical assignment logical logical logical * / % + - . << >> < <= > >= <> == != === !== & ^ | && || = += -= *= /= .= %= &= |= ^= <<= >>= and xor or types 25 Operator Precedence: Example You can override the order of precedence but enclosing part of an expression in parentheses. The innermost parentheses are processed first, so that: (7 - 4) + 1 will give a result of 4 7 - (4 + 1) will give a result of 2 2 + 3 * 3 will give a result of 11 2 + (3 * 3) will also give 11 (2 + 3) * 3 will give a result of 15 1 + 3 + 3 * 2 will give a result of 10 1 + ((3 + 3) * 2) will give a result of 13 (1 + (3 + 3)) * 2 will give a result of 14 It is recommended that you use parentheses whenever you create a complex expression (even if not needed) so that it is easier for you and others to see what is going on when you read the code itself. 26 Control Structures Control Structures are at the core of programming logic. They allow a PHP script to alter the normal top-to-bottom order of execution for program code. In other words, the script can react differently depending on what has already occurred, or based on user input, and allow the graceful handling of repetitive tasks. The two basic control structures, present in any procedural language, are branching and looping. Branching allows the program to select between two or more alternative blocks of code. The if and switch ... case statements are used for branching. Looping (also known as iteration) allows the program to repeat a block of code, either a fixed number of times or until a conditional expression evaluates to a desired value. The for and while statements are used for looping. 27 If Statement The if statement is the most fundamental control structure in any programming language. Its function is to execute a statement or block of statements if and only if the comparison expression provided to it evaluates to true. if (conditions) { // Code if condition is true } That is, the if statement "guards" a statement that is either executed or not ... based on the value of the expression 28 If Then Else Statement A variation on the basic if is the if ... then ... else statement. This variation selects between two alternative statements as illustrated below. if (conditions) { // Code if condition is true } else { // Code if condition is false } 29 Examples We can use comparison operators and logical operators in if statements that are more complex then which we have seen at the beginning of this chapter. Example -1 : if ($num1 == 1 && $num2 <=5 && !empty($num3) { // enter your code here } Example-2: if ($a > $b) { print "a is bigger than b"; } else { print "a is NOT bigger than b"; } 30 If … ElseIf Statement Like else, the elseif statement extends an if statement to execute a different statement in case the original if expression evaluates to false. However, unlike else, it will execute that alternative expression only if the elseif conditional expression evaluates to true. if ($a { print } elseif { print } else { print } > $b) "a is bigger than b"; ($a == $b) "a is equal to b"; "a is smaller than b"; 31 Alternative If Statements You can write if statements in a couple of different ways. The first simply substitutes a colon for the opening curly brace and the word endif with a semicolon for the closing curly brace. Example: if (condition1) : statement1; elseif (condition2): statement2; else: statement3 endif; The other alternative if structure is Ternary Operator, represented by question mark character ( ? ). This character can be used as shorthand for simple if/else Statements. It can only be used in situations where you want to execute a single expression based on whether a single condition evaluates to true or false. Example: (condition) ? (executes if the condition is true) : (executes if the condition is false); Note that this is a single statement, with the semicolon at the end. 32 Switch Statement The switch statement is similar to a series of IF statements on the same expression. In many occasions, you may want to compare the same variable (or expression) with many different values, and execute a different piece of code depending on which value it equals to. This is exactly what the switch statement is for. switch ($i) { case 0: print "i equals 0"; break; case 1: print "i equals 1"; break; default: print “Unexpected value for \$i"; } 33 While Loop While tells PHP to execute the nested statement (s) repeatedly, as long as the while expression evaluates to true. The value of the expression is checked each time at the beginning of the loop. Example: while (condition) { //code to execute } Example: $a=0; While ($a<=10) { echo “$a <br> \n”; $a++; } 34 Do … While Loop It is same as while loop discussed above. The only difference is that the condition is tested after the code in question has been executed once . do { // code to be used here } while (condition) ; Example: $a=0; do { echo “$a <br> \n”; $a++; } while ($a<=10); 35 For Loop The for loop takes three expressions. The first one is initialization condition, second is condition that is evaluated in each iteration; if this condition is false than the loop will end, and the third expression is executed in every iteration. Example: for ($i = 0 ; $i <= 10 ; $i++) { echo $i. "<br>\n" ; } The first time, value of i = 0, so 0 will be printed and further 1 to 10 will be printed as value of i is incremented by 1 in each iteration. 36 Foreach Loop PHP 4 (not PHP 3) includes a foreach construct, much like Perl and some other languages. This simply gives an easy way to iterate over arrays. There are two syntaxes; the second is a minor but useful extension of the first: foreach(array_expression as $value) statement foreach(array_expression as $key => $value) statement The first form loops over the array given by array_expression. On each loop, the value of the current element is assigned to $value and the internal array pointer is advanced by one (so on the next loop, you'll be looking at the next element). The second form does the same thing, except that the current element's key will be assigned to the variable $key on each loop (for associative arrays). 37 Foreach Loop: Example $names= array(“Jay”, “Brad”, “Ernie”, “John”); foreach($names as $i) { echo $i . “<br> \n”; } Output: Jay Brad Ernie John 38 “continue” in Loops • Continue is used within looping structures to skip the rest of the current loop iteration and continue execution at the beginning of the next iteration. • Continue accepts an optional numeric argument which tells it how many levels of enclosing loops it should skip to the end of. Example : $i = 0; while ($i++ < 5) { echo "Outer-”.$i.”<br>\n"; while (1) { echo "Middle<br>\n"; while (1) { echo "Inner<br>\n"; continue 3; } echo "This never gets output.<br>\n"; } echo "Neither does this.<br>\n"; } Output: Outer-1 Middle Inner Outer-2 Middle Inner Outer-3 Middle Inner Outer-4 Middle Inner Outer-5 Middle Inner 39 “break” in Loops break ends execution of the current for , foreach , while , do..while or switch structure. break accepts an optional numeric argument which tells it how many nested enclosing structures are to be broken out of. Example: $i = 0; while (++$i) { switch ($i) { case 5: echo "At break 1; case 10: echo "At break 2; default: break; } } 5<br>\n"; /* Exit only the switch. */ 10 quitting<br>\n"; /* Exit the switch and the while. */ 40