1. Trang chủ
  2. » Công Nghệ Thông Tin

PHP and MySQL Web Development - P15 doc

5 260 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 67,41 KB

Nội dung

37 Precedence and Associativity: Evaluating Expressions Precedence and Associativity: Evaluating Expressions In general, operators have a set precedence, or order, in which they are evaluated. Operators also have an associativity, which is the order in which operators of the same precedence will be evaluated.This is generally left to right (called left for short), right to left (called right for short), or not relevant. Table 1.6 shows operator precedence and associativity in PHP. In this table, the lowest precedence operators are at the top, and precedence increases as you go down the table. Tab le 1.6 Operator Precedence in PHP Associativity Operators left , left or left xor left and right print left = += -= *= /= .= %= &= |= ^= ~= <<= >>= left ? : left || left && left | left ^ left & n/a == != === n/a < <= > >= left << >> left + - . left * / % right ! ~ ++ (int) (double) (string) (array) (object) @ right [] n/a new n/a () Notice that the highest precedence operator is one we haven’t covered yet: plain old parentheses.The effect of these is to raise the precedence of whatever is contained with- in them.This is how we can work around the precedence rules when we need to. 03 525x ch01 1/24/03 3:40 PM Page 37 38 Chapter 1 PHP Crash Course Remember this part of the last example: $totalamount = $totalamount * (1 + $taxrate); If we had written $totalamount = $totalamount * 1 + $taxrate; the multiplication operator, having higher precedence than the addition operator, would be performed first, giving us an incorrect result. By using the parentheses, we can force the sub-expression 1 + $taxrate to be evaluated first. You can use as many sets of parentheses as you like in an expression.The innermost set of parentheses will be evaluated first. Va riable Functions Before we leave the world of variables and operators, we’ll take a look at PHP’s variable functions.These are a library of functions that enable us to manipulate and test variables in different ways. Testing and Setting Variable Types Most of these functions have to do with testing the type of a function. The two most general are gettype() and settype().These have the following func- tion prototypes; that is, this is what arguments expect and what they return. string gettype(mixed var); bool settype (mixed var, string type); To use gettype(),we pass it a variable. It will determine the type and return a string containing the type name, or "unknown type" if it is not one of the standard types; that is, integer, double, string, array, or object. To use settype(),we pass it a variable that we would like to change the type of, and a string containing the new type for that variable from the previous list. We can use these as follows: $a = 56; echo gettype($a).'<br />'; settype($a, 'double'); echo gettype($a).'<br />'; When gettype() is called the first time, the type of $a is integer. After the call to set- type(),the type will be changed to double. PHP also provides some specific type testing functions. Each of these takes a variable as argument and returns either true or false.The functions are n is_array() n is_double(), is_float(), is_real() (All the same function) 03 525x ch01 1/24/03 3:40 PM Page 38 39 Variable Functions n is_long(), is_int(), is_integer() (All the same function) n is_string() n is_object() Testing Variable Status PHP has several ways to test the status of a variable. The first of these is isset(), which has the following prototype: bool isset(mixed var); This function takes a variable name as argument and returns true if it exists and false otherwise. You can wipe a variable out of existence by using its companion construct, unset(). This has the following prototype: void unset(mixed var); This gets rid of the variable it is passed and returns true. Finally there is empty().This checks to see if a variable exists and has a non-empty, non-zero value and returns true or false accordingly. It has the following prototype: boolean empty(mixed var); Let’s look at an example using these. Tr y adding the following code to your script temporarily: echo isset($tireqty); echo isset($nothere); echo empty($tireqty); echo empty($nothere); Refresh the page to see the results. The variable $tireqty should return true from isset() regardless of what value you entered or didn’t enter in that form field.Whether it is empty() or not depends on what you entered in it. The variable $nothere does not exist, so it will generate a false result from isset() and a true result from empty(). These can be handy in making sure that the user filled out the appropriate fields in the form. Re-interpreting Variables You can achieve the equivalent of casting a variable by calling a function.The three functions that can be useful for this are int intval(mixed var); float doubleval(mixed var); string strval(mixed var); 03 525x ch01 1/24/03 3:40 PM Page 39 40 Chapter 1 PHP Crash Course Each of these accepts a variable as input and returns the variable’s value converted to the appropriate type. A convention used in this book, and in the php.net documentation is referring to the datatype mixed.There is no such datatype, but because PHP is so flexible with type han- dling, many functions can take many (or any) datatypes as an argument. Arguments where many types are permitted are shown with the type mixed. Control Structures Control structures are the structures within a language that allow us to control the flow of execution through a program or script.You can group them into conditionals (or branching) structures, and repetition structures, or loops.We will consider the specific implementations of each of these in PHP next. Making Decisions with Conditionals If we want to sensibly respond to our user’s input, our code needs to be able to make decisions.The constructs that tell our program to make decisions are called conditionals. if Statements We can use an if statement to make a decision.You should give the if statement a con- dition to use. If the condition is true, the following block of code will be executed. Conditions in if statements must be surrounded by brackets (). For example, if we order no tires, no bottles of oil and no spark plugs from Bob, it is probably because we accidentally pressed the Submit button. Rather than telling us “Order processed,” the page could give us a more useful message. When the visitor orders no items, we might like to say,“You did not order anything on the previous page!”We can do this easily with the following if statement: if( $totalqty == 0 ) echo 'You did not order anything on the previous page!<br />'; The condition we are using is $totalqty == 0. Remember that the equals operator ( ==) behaves differently from the assignment operator (=). The condition $totalqty == 0 will be true if $totalqty is equal to zero. If $totalqty is not equal to zero, the condition will be false.When the condition is true,the echo statement will be executed. Code Blocks Often we have more than one statement we want executed inside a conditional state- ment such as if.There is no need to place a new if statement before each. Instead, we can group a number of statements together as a block.To declare a block, enclose it in curly braces: 03 525x ch01 1/24/03 3:40 PM Page 40 41 Making Decisions with Conditionals if( $totalqty == 0 ) { echo '<font color=red>'; echo 'You did not order anything on the previous page!<br />'; echo '</font>'; } The three lines of code enclosed in curly braces are now a block of code.When the condition is true, all three lines will be executed.When the condition is false, all three lines will be ignored. Note As already mentioned, PHP does not care how you lay out your code. You should indent your code for read- ability purposes. Indenting is generally used to enable us to see at a glance which lines will only be execut- ed if conditions are met, which statements are grouped into blocks, and which statements are part of loops or functions. You can see in the previous examples that the statement which depends on the if statement and the statements which make up the block are indented. else Statements Yo uwill often want to decide not only if you want an action performed, but also which of a set of possible actions you want performed. An else statement allows you to define an alternative action to be taken when the condition in an if statement is false.We want to warn Bob’s customers when they do not order anything. On the other hand, if they do make an order, instead of a warning, we want to show them what they ordered. If we rearrange our code and add an else statement, we can display either a warning or a summary. if( $totalqty == 0 ) { echo 'You did not order anything on the previous page!<br />'; } else { echo $tireqty.' tires<br />'; echo $oilqty.' bottles of oil<br />'; echo $sparkqty.' spark plugs<br />'; } We can build more complicated logical processes by nesting if statements within each other. In the following code, not only will the summary only be displayed if the condi- tion $totalqty == 0 is true,but also each line in the summary will only be displayed if its own condition is met. 03 525x ch01 1/24/03 3:40 PM Page 41 . gets rid of the variable it is passed and returns true. Finally there is empty().This checks to see if a variable exists and has a non-empty, non-zero value and returns true or false accordingly 39 40 Chapter 1 PHP Crash Course Each of these accepts a variable as input and returns the variable’s value converted to the appropriate type. A convention used in this book, and in the php. net documentation. precedence and associativity in PHP. In this table, the lowest precedence operators are at the top, and precedence increases as you go down the table. Tab le 1.6 Operator Precedence in PHP Associativity

Ngày đăng: 07/07/2014, 03:20

TỪ KHÓA LIÊN QUAN