Bài giảng PHP - Chương 2: PHP Căn bản - Nguyễn Phú Quảng

II.1.2.4. Kiểu string  String trong PHP là một chuỗi các ký tự 1 byte. PHP không hỗ trợ Unicode, để làm việc với Unicode bạn phải sử dụng UTF8 với các hàm utf8_encode() – utf8_decode()  String của PHP hỗ trợ chiều dài rất lớn (?)  Trong PHP, string được xác định theo 3 cách – Dấu nháy đơn (single quote) – Dấu nháy kép (double quote) – Heredoc  Truyền biến trong string – Truyền kiểu đơn giản – Truyền kiểu phức  Truy cập đến từng ký tự trong string  Các toán tử trên string

pdf66 trang | Chia sẻ: thanhle95 | Lượt xem: 522 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng PHP - Chương 2: PHP Căn bản - Nguyễn Phú Quảng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
II. PHP Căn bản II.1. Biến, kiểu và hằng II.2. Toán tử và biểu thức II.3. Các câu lệnh điều khiển II.4. Hàm II.5. Lớp & đối tượng II.6. Tham chiếu (reference) II.1. Biến, kiểu và hằng II.1.1. Biến II.1.1.1. Tên biến II.1.1.2. Tham chiếu II.1.1.3. Biến động II.1.1.4. Phạm vi (scope) của biến II.1.2. Kiểu II.1.3. Hằng II.1.1.1. Tên biến <?php $var = "Bob"; $Var = "Joe"; echo "$var, $Var"; // outputs "Bob, Joe" $4site = 'not yet'; // invalid; starts with a number $_4site = 'not yet'; // valid; starts with an underscore $täyte = 'mansikka'; // valid; 'ä' is (Extended) ASCII 228. ?> Biến được ký hiệu bởi ký tự $ Tên biến phải được bắt đầu bởi 1 chữ cái hoặc ký tự gạch chân Tên biến không chứa các dấu và ký tự cách II.1.1.2. Tham chiếu Giống ngôn ngữ C, trong PHP bạn có thể sử dụng tham chiếu <?php $quang = "adfsdfasdfa"; echo("$quang"); $q = &$quang; $q = "quangnp"; echo("$quang"); ?> <?php $foo = 25; $bar = &$foo; // This is a valid assignment. $bar = &(24 * 7);// Invalid references an unnamed expression. function test() { return 25; } $bar = &test(); // Invalid. ?> II.1.1.3. Biến động (Dynamic Variable) Vì PHP là ngôn ngữ thông dịch nên bạn có thể sử dụng các biến có tên chưa biết trước (tên biến thay đổi) <?php $a = "quang"; // gia tri cua bien a la 'quang' $$a = "np"; // bien dong $quang co gia tri la 'np' echo("$a"); // In ra gia tri cua bien a echo("$quang"); // In ra gia tri cua bien quang ${"quang"} = 13432; // Gian truc tiep bien dong echo("$quang"); $c = "quang"; ${$c} = 1000; // Mot cach khac de truy cap den bien dong quang echo("${$c}"); ?> II.1.1.4. Phạm vi của biến <?php $a = 1; include "b.inc"; ?> Phạm vi của biến [a] có tác dụng trong cả b.inc <?php $a = 1; // global scope function Test() { echo $a; // reference to local scope variable } Test(); ?> Biến [a] ở ngoài và trong hàm Test khác nhau II.1.1.4. Phạm vi của biến (2) Từ khóa global <?php $a = 1; $b = 2; function Sum() { //a, b trong & ngoai ham Sum global $a, $b; // la giong nhau $b = $a + $b; } Sum(); echo $b; ?> Hoặc sử dụng cú pháp <?php $a = 1; $b = 2; function Sum() { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Sum(); echo $b; ?> II.1.1.4. Phạm vi của biến (3) <?php function Test () { $a = 0; echo $a; $a++; } Test(); Test(); ?> <?php function Test () { static $a = 0; echo $a; $a++; } Test(); Test(); ?> II.1.1.4. Phạm vi của biến (4) <?php $foo = 25; $bar = &$foo; // This is a valid assignment. function test() { global $foo; return $foo; } $bar = &test(); // Invalid. echo($bar); ?> II.1.2. Kiểu  Các kiểu đơn II.1.2.1. boolean II.1.2.2. integer II.1.2.3. float II.1.2.4. string  Các kiểu phức II.1.2.5. array II.1.2.6. object  Các kiểu đặc biệt II.1.2.7. resource II.1.2.8. NULL II.1.2. Kiểu (2) <?php $bool = TRUE; // a boolean $str = "foo"; // a string $int = 12; // an integer echo gettype($bool); // prints out "boolean" echo gettype($str); // prints out "string“ // If this is an integer, increment it by four if (is_int($int)) { $int += 4; } // If $bool is a string, print it out // (does not print out anything) if (is_string($bool)) { echo "String: $bool"; } ?> Bạn có thể ép kiểu bằng hàm settype() II.1.2.1. Kiểu boolean <?php // == is an operator which test // equality and returns a boolean $q = (1==1); echo("$q"); $q = (1=="1"); echo("$q"); // this is not necessary... if ($show_separators == TRUE) { echo "\n"; } // ...because you can simply type if ($show_separators) { echo "\n"; } ?> II.1.2.2. Kiểu integer <?php $a = 1234; # decimal number $a = -123; # a negative number $a = 0123; # octal number (equivalent to 83 decimal) $a = 0x1A; # hexadecimal number (equivalent to 26 decimal) ?> <?php $a=10000000; var_dump($a); echo(""); $a=100000000; var_dump($a); echo(""); $a=1000000000; var_dump($a); echo(""); $a=10000000000; var_dump($a); echo(""); ?> II.1.2.3. Kiểu float <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> <?php $foo = 1 + "10.5"; // $foo is float (11.5) $foo = 1 + "-1.3e3"; // $foo is float (- 1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2) $foo = "10.0 pigs " + 1; // $foo is float (11) $foo = "10.0 pigs " + 1.0; // $foo is float (11) ?> II.1.2.4. Kiểu string  String trong PHP là một chuỗi các ký tự 1 byte. PHP không hỗ trợ Unicode, để làm việc với Unicode bạn phải sử dụng UTF8 với các hàm utf8_encode() – utf8_decode()  String của PHP hỗ trợ chiều dài rất lớn (?)  Trong PHP, string được xác định theo 3 cách – Dấu nháy đơn (single quote) – Dấu nháy kép (double quote) – Heredoc  Truyền biến trong string – Truyền kiểu đơn giản – Truyền kiểu phức  Truy cập đến từng ký tự trong string  Các toán tử trên string II.1.2.4. Kiểu String (2) Kiểu dấu nháy đơn <?php echo 'this is a simple string'; echo 'You can also have embedded newlines in strings this way as it is okay to do'; // Outputs: Arnold once said: "I'll be back" echo 'Arnold once said: "I\'ll be back"'; // Outputs: You deleted C:\*.*? echo 'You deleted C:\\*.*?'; // Outputs: You deleted C:\*.*? echo 'You deleted C:\*.*?'; // Outputs: This will not expand: \n a newline echo 'This will not expand: \n a newline'; // Outputs: Variables do not $expand $either echo 'Variables do not $expand $either'; ?> II.1.2.4. Kiểu String (3)  Kiểu dấu nháy kép: kiểu này giống với kiểu dấu nháy đơn nhưng có nhiều hỗ trợ cho các ký tự đặc biệt hơn II.1.2.4. Kiểu String (4) Kiểu Heredoc <?php $str = <<<EOA Example of string spanning multiple lines using heredoc syntax. EOA; echo($str); $name = "quang"; $d = date("d/m/y"); $str = <<<EOQ This is a lecture of $name. Ngay $d EOQ; echo($str); ?> II.1.2.4. Kiểu String (5) Truyền biến kiểu đơn giản <?php $beer = 'Heineken'; echo "$beer's taste is great"; // works, "'" is an invalid character for varnames echo "He drank some $beers"; // won't work, 's' is a valid character for varnames echo "He drank some ${beer}s"; // works echo "He drank some {$beer}s"; // works ?> Truyền biến kiều phức (truyền biến kiểu mảng vào string) – sẽ đề cập đến ở phần mảng II.1.2.4. Kiểu String (6) Truy cập đến từng ký tự của String <?php $str = "This is a test"; echo $str[0]; // Ky tu dau tien echo $str{1}; // Ky tu thu 2 echo $str{strlen($str)-1}; // Ky tu cuoi cung echo "$str"; $str{strlen($str)-1} = "s"; // Sua ky tu cuoi cung echo "$str"; ?> Các toán tử trên string <?php $str1 = "quang"; $str2 = "np"; echo $str1 . $str2, ""; echo $str1 + $str2, ""; ?> II.1.2.5. Kiểu Array  Kiểu Array của PHP thực sự là kiểu ánh xạ (map) có thứ tự. Tức là kiểu dữ liệu gồm các cặp khóa (key) và giá trị (value).  Với kiểu mảng này, bạn có thể sử dụng như một mảng thuần túy (vector), hay dùng cho các kiểu dữ liệu collection, stack, queue, tree... II.1.2.5. Kiểu Array (2) Khai báo <?php $ar = array(3,4,5,6,3,2); echo var_dump($ar), ""; $ar = array(5=>10, 20, 30, "q"=>40); echo var_dump($ar), ""; $ar = array(5=>10, 6=>20, 7=>30, "q"=>40); echo var_dump($ar), ""; $ar = array("a"=>10, 20, 30, 40); echo var_dump($ar), ""; $ar = array("a"=>array(1,2,3,4,5), 20, 30, 40); echo var_dump($ar); ?> II.1.2.5. Kiểu Array (3) Sử dụng array <?php $arr = array(5 => 1, 12 => 2); $arr[] = 56; // This is the same as $arr[13] = 56; // at this point of the script $arr["x"] = 42; // This adds a new element to // the array with key "x" unset($arr[5]); // This removes the element from the array unset($arr); // This deletes the whole array ?> <?php $handle = opendir("."); var_dump($handle); while($file=readdir($handle)) { $files[] = $file; } var_dump($files); ?> II.1.2.6. Kiểu Object <?php class Xeco { var $sobanh; function BaoNhieuBanh() { echo($this->sobanh); } }; $xe = new Xeco(); $xe->sobanh = 4; $xe->BaoNhieuBanh(); ?> II.1.3. Hằng Định nghĩa hằng bằng cách sử dụng hàm define() Phạm vi của hằng là toàn cục (global) Chỉ có các dạng dữ liệu đơn giản (boolean, interger, float, string) Nếu tên hằng chưa được định nghĩa, PHP giả thiết rằng bạn đang sử dụng 1 hằng chứa giá trị là 1 string (chính là tên của hằng đó) Để xác định một hằng đã được định nghĩa hay chưa, bạn có thể sử dụng hàm defined <?php define("CONSTANT", "Hello world."); echo CONSTANT; // outputs "Hello world." echo Constant; // outputs "Constant" and issues a notice. echo defined("Constant"); echo defined("CONSTANT"); ?> II.1.3. Hằng (2)  Các hằng được định nghĩa trước (các hằng này thường được sử dụng để phục vụ quá trình debug Tên hằng Mô tả __LINE__ Thứ tự dòng hiện tại trong file __FILE__ Đường dẫn đầy đủ của file hiện tại __FUNCTION__ Tên hàm hiện tại __CLASS__ Tên lớp hiện tại __METHOD__ Tên phương thức hiện tại của lớp II.2. Toán tử và biểu thức II.2.1. Mức độ ưu tiên các toán tử II.2.2. Toán tử số học II.2.3. Toán tử gán II.2.4. Các toán tử trên bit II.2.5. Toán tử so sánh II.2.6. Toán tử điều khiển lỗi II.2.7. Toán tử thực thi II.2.8. Toán tử tăng, giảm II.2.9. Các toán tử logic II.2.10. Toán tử trên string II.2.11. Toán tử trên mảng II.2.1. Mức độ ưu tiên các toán tử Associativity Operators left , left or left xor left and right print right = += -= *= /= .= %= &= |= ^= >= left ? : left || left && left | left ^ left & non-associative == != === !== non-associative >= left > left + - . left * / % right ! ~ ++ -- (int) (float) (string) (array) (object) @ right [ non-associative new II.2.2. Toán tử số học Example Name Result $a + $b Addition Sum of $a and $b. $a - $b Subtraction Difference of $a and $b. $a * $b Multiplicatio n Product of $a and $b. $a / $b Division Quotient of $a and $b. $a % $b Modulus Remainder of $a divided by $b. II.2.3. Toán tử gán  Toán tử gán (=) cho phép bạn gán một biểu thức (vế phải) cho 1 biến (vế trái)  Toán tử gán trả về giá trị của biểu thức vế phải, do đó có thể dùng nhiều phép gán liên tiếp nhau  Ngoài ra, còn có các phép toán gọi là phép toán kết hợp cho hầu hết các toán tử số học để thay đổi giá trị 1 biến theo phép toán số học đó (+=, -=, *=, /=, .= ...) <?php $a = 4; echo "$a\n"; $a = $b = $c = 10; echo "$a,$b,$c\n"; $a = ($b=4) + 5; echo "$a,$b\n"; $a .= "quang"; echo "$a\n"; $a = ($b+=10) + 2; echo "$a"; ?> II.2.4. Các toán tử trên bit Example Name 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") <?php echo 12 ^ 9; // Outputs '5' echo "12"^"9"; // Outputs the Backspace character (ascii 8) // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8 echo "hallo"^"hello"; // Outputs the ascii values #0 #4 #0 #0 #0 // 'a' ^ 'e' = #4 ?> II.2.5. Toán tử so sánh Example Name Result $a == $b Equal TRUE if $a is equal to $b. $a === $b Identical TRUE if $a is equal to $b, and they are of the same type. (PHP 4 only) $a != $b Not equal TRUE if $a is not equal to $b. $a $b Not equal TRUE if $a is not equal to $b. $a !== $b Not identical TRUE if $a is not equal to $b, or they are not of the same type. (PHP 4 only) $a < $b Less than TRUE if $a is strictly less than $b. $a > $b Greater than TRUE if $a is strictly greater than $b. $a <= $b Less than or equal to TRUE if $a is less than or equal to $b. $a >= $b Greater than or equal to TRUE if $a is greater than or equal to $b. II.2.6. Toán tử điều khiển lỗi  Toán tử điều khiển lỗi (@) dùng để đặt trước các hàm, biểu thức. Khi đó tất cả các thông báo lỗi trong hàm, biểu thức đó bị bỏ qua <?php $b = @file("a adf a") or die("Khong the mo file"); ?> II.2.7. Toán tử thực thi  Toán tử thực thi (``) cho phép bạn gọi các lệnh trên console, (các thông tin tin này có thể viết ra output hoặc gán vào các biến) <?php $output = `dir c:\\`; echo "$output"; ?> II.2.8. Toán tử tăng, giảm <?php $a = 5; echo "Should be 5: " . $a++ . "\n"; echo "Should be 6: " . $a . "\n"; $a = 5; echo "Should be 6: " . ++$a . "\n"; echo "Should be 6: " . $a . "\n"; $a = 5; echo "Should be 5: " . $a-- . "\n"; echo "Should be 4: " . $a . "\n"; $a = 5; echo "Should be 4: " . --$a . "\n"; echo "Should be 4: " . $a . "\n"; ?> II.2.9. Các toán tử logic Example Name Result $a and $b And TRUE if both $a and $b are TRUE. $a or $b Or TRUE if either $a or $b is TRUE. $a xor $b Xor TRUE if either $a or $b is TRUE, but not both. ! $a Not TRUE if $a is not TRUE. $a && $b And TRUE if both $a and $b are TRUE. $a || $b Or TRUE if either $a or $b is TRUE. II.2.10. Toán tử trên string  Có 2 toán tử trên string ( . và .=) <?php $a = "Hello "; $b = $a . "World!"; // now $b contains "Hello World!" $a = "Hello "; $a .= "World!"; // now $a contains "Hello World!“ ?> II.2.11. Toán tử trên mảng Đối với mảng, chỉ có toán tử +, toán tử này nối 2 mảng với nhau (các phần trùng khóa được lấy ở toán hạng trái) <?php $a = array("a" => "apple", "b" => "banana"); $b = array("a" =>"pear", "b" => "strawberry", "c" => "cherry"); $c = $a + $b; var_dump($c); ?> II.3. Các cấu trúc điều khiển II.3.1. Cấu trúc if, else, elseif, endif II.3.2. Cấu trúc while / do...while II.3.3. Cấu trúc for / for...each II.3.4. Sử dụng break, continue trong các vòng lặp II.3.5. Cấu trúc switch II.3.1. Cấu trúc if, else, elseif, endif <?php if ($a > $b) { echo "a is bigger than b"; $b = $a; } if ($a > $b) { echo "a is bigger than b"; } else { echo "a is NOT bigger than b"; } if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } ?> A is equal to 5 II.3.2. Cấu trúc while / do...while <?php $i = 1; while ($i <= 10) { print $i++; } $i = 1; while ($i <= 10): print $i; $i++; endwhile; $i = 0; do { print $i; } while ($i > 0); ?> II.3.3. Cấu trúc for / for...each <?php echo "--------------------\n"; for ($i = 1; $i <= 10; $i++) { print "$i\n"; } echo "--------------------\n"; for ($i = 1; ; $i++) { if ($i > 10) break; print "$i\n"; } echo "--------------------\n"; $i = 1; for (;;) { if ($i > 10)break; print "$i\n"; $i++; } echo "--------------------\n"; for ($i = 1; $i <= 10; print "$i\n", $i++); echo "--------------------\n"; for ($i = 1; $i<=20; $i++): print "$i\n"; endfor ?> II.3.3. Cấu trúc for / for...each (2) foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement <?php $arr = array("one", "two", "three"); reset ($arr); while (list(, $value) = each ($arr)) { echo "Value: $value\n"; } foreach ($arr as $value) { echo "Value: $value\n"; } foreach ($arr as $key => $value) { echo "Key: $key; Value: $value\n"; } foreach (array(1, 2, 3, 4, 5) as $v) { print "$v\n"; } ?> II.3.4. Sử dụng break, continue trong các vòng lặp <?php $arr = array ('one','two','three','four','stop','five'); while (list (, $val) = each ($arr)) { if ($val == 'stop') break; // Viết “break 1;” cũng được echo "$val\n"; } while (list ($key, $value) = each ($arr)) { if (!($key % 2)) // Bỏ qua số lẻ continue; do_something_odd ($value); } ?> II.3.4. Sử dụng break, continue trong các vòng lặp (2) $i = 0; while ($i++ < 5) { echo "Outer\n"; while (1) { echo "  Middle\n"; while (1) { echo "  Inner\n"; continue 3; } echo "This never gets output.\n"; } echo "Neither does this.\n"; } ?> II.3.5. Cấu trúc switch <?php if ($i == 0) { print "i equals 0"; } elseif ($i == 1) { print "i equals 1"; } elseif ($i == 2) { print "i equals 2"; } switch ($i) { case 0: print "i equals 0"; break; case 1: print "i equals 1"; break; case 2: print "i equals 2"; break; } ?> II.4. Hàm II.4.1. Hàm tự định nghĩa (user-defined) II.4.2. Truyền tham số II.4.3. Giá trị trả về II.4.4. Biến hàm II.4.1. Hàm tự định nghĩa (user-defined) <?php function foo ($arg_1, $arg_2, ..., $arg_n) { echo "Example function.\n"; return $retval; } ?> <?php function foo() { function bar() { echo "I don't exist until foo() is called.\n"; } } // Không thể gọi bar() vì nó chưa được đình nghĩa foo(); // Bây giờ thì có thể gọi bar() bar(); ?> II.4.2. Truyền tham số PHP hỗ trợ truyền tham số vào hàm, truyền tham số dưới dạng tham chiếu (reference), truyền tham số với giá trị mặc định <?php function takes_array($input) { echo "$input[0] + $input[1] = ", $input[0]+$input[1]; } function add_some_extra(&$string) { $string .= 'and something extra.'; } $str = 'This is a string, '; add_some_extra($str); echo $str;// outputs 'This is a string, and something extra. ?> II.4.2. Truyền tham số (2) function makecoffee ($type = "cappuccino") { return "Making a cup of $type.\n"; } echo makecoffee (); echo makecoffee ("espresso"); function makeyogurt ($type = "acidophilus", $flavour) { return "Making a bowl of $type $flavour.\n"; } // won't work as expected echo makeyogurt ("raspberry"); function makeyogurt ($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour.\n"; } // works as expected echo makeyogurt ("raspberry"); II.4.2. Truyền tham số (3) Bạn có thể truyền tham số với số lượng không xác định. Khi đó sẽ sử dụng các hàm sau func_num_args(): Số lượng tham số func_get_args(): Lấy danh sách các tham số <?php function mwrite() { $arg = func_get_args(); foreach($arg as $value) echo "$value\n"; } mwrite("Khoa CNTT", "Truong DHXD", "Lop 46PM1"); ?> II.4.3. Giá trị trả về Để trả về giá trị của hàm, sử dụng lệnh return. Có thể sử dụng bất cứ kiểu nào trong giá trị trả về của hàm (kể cả mảng và đối tượng) <?php function square ($num) { return $num * $num; } echo square (4); // outputs '16'. function small_numbers() { return array (0, 1, 2); } list ($zero, $one, $two) = small_numbers(); function &returns_reference() { return $someref; } $newref =& returns_reference(); ?> II.4.4. Biến hàm Bạn có thể sử dụng các biến hàm (tức là bạn có thể gọi hàm dưới dạng ten_bien() ). Biến hàm thường được sử dụng cho các hàm callback <?php function foo() { echo "In foo()\n"; } function bar($arg = '') { echo "In bar(); argument was '$arg'.\n"; }
Tài liệu liên quan