Tuesday, January 27, 2015

Hướng dẫn cách nhận tiền từ Google Adsense

Chơi Adsense là hình thức kiếm tiền online mà nhiều chủ trang web ở Việt Nam (cũng như thế giới) tham gia. Blog Mạng Lưới Toàn Cầu cũng có chơi hơn một năm nay. Hôm nay sau khi đạt đến hạn mức thanh toán, Google đã gửi tiền cho mình. Cùng xem cách thức nhận tiền đơn giản và nhanh chóng từ Google trong bài viết này nhé.

Sau khi đăng nhập vào Google Adsense, bạn click vào hình bánh răng cưa rồi chọn thanh toán để thấy các thông tin cần thiết:

Chọn thanh toán

Hình thức thanh toán đơn giản nhất đối với người dùng Việt Nam (để nhận tiền từ Google) là dịch vụ chuyển tiền của Western Union. Hạn mức thanh toán tối thiểu là 100 USD. Nếu chưa chọn, bạn nên chọn sử dụng Western Union.

Khi vượt hạn mức tối thiểu, Google sẽ gửi tiền cho bạn và thông báo ở mục thanh toán, thường rơi vào ngày 21 đến 23 của tháng.

Bạn sẽ thấy thông báo tương tự như sau:

Tiền đã được chuyển về Việt Nam

Điều này có nghĩa là tiền của bạn đã được chuyển về Việt Nam (Đã được phát hành). 

Khi click vào đường link bạn sẽ thấy các thông tin nhận tiền:

Biên lai thanh toán gửi từ Google
Bạn phải ghi lại các thông tin quan trọng sau (nếu nhà có máy in thì bạn nên in ra cho chính xác):
  • Số tiền thanh toán
  • Mã số chuyển tiền
  • Chứng minh thư nhân dân
  • Thông tin người gửi tiền, trong trường hợp của mình là Google Ireland, Ltd., Dublin 4, Ai-len
Làm sao để nhận được số tiền này?

Rất đơn giản, bạn tìm đến bất cứ ngân hàng nào có biểu tượng nhận và gửi tiền của Western Union. Nó có màu vàng rất nổi bật:


Bạn ra quầy bảo mình muốn nhận tiền từ Western Union, họ sẽ đưa cho bạn tờ giấy điền thông tin. Sau khi điền xong, họ sẽ kiểm tra 1 - 2 phút rồi đưa tiền cho bạn, bạn có thể chuyển ngay sang tiền Việt nếu muốn.

Đợt rồi mình kiếm được trên 2 triệu, tất nhiên là không nhiều sau một năm chơi (ngày có vài nghìn à!), tuy nhiên có tiền cũng thích lắm :) Bạn nào chơi khéo, chơi giỏi, kiếm tiền từ Adsense đủ ăn là có khả năng. Chúc các bạn may mắn.

Lưu ý: 
  • Bạn không mất thêm chi phí để nhận tiền. 
  • Kể từ ngày chuyển tiền về Việt Nam bạn có tối đa 60 ngày để nhận tiền.

Monday, January 26, 2015

Hàm rand() và mt_rand() trong PHP

Hai hàm này có chức năng như nhau, dùng để tạo các số ngẫu nhiên. Điểm khác biệt duy nhất là hàm mt_rand() nhanh hơn 4 lần so với rand(). Và không gian ngẫu nhiên của nó cũng rộng hơn.

Cú pháp:
  • rand(): sẽ cho ra một số nguyên ngẫu nhiên, giá trị lớn nhất có thể là 32767 (còn gọi là  getrandmax)
  • mt_rand(): sẽ cho ra số nguyên ngẫu nhiên, giá trị lớn nhất có thể là 2147483647 (còn gọi là mt_getrandmax)
  • rand(min, max): min, max là tùy chọn. Kết quả sẽ cho ra số ngẫu nhiên trong khoảng min max (có thể dùng số âm). 
  • mt_rand(min, max): min, max là tùy chọn. Kết quả cho ra số ngẫu nhiên nguyên trong khoảng min, max (có thể dùng số âm).
Ví dụ:

<?php
echo rand()."</br>";
echo mt_rand()."</br>";
echo rand(13, 345)."</br>";
echo mt_rand(1, 600)."</br>";
?>

Đây là kết quả của tôi:

23840
1751926519
72
41

Dĩ nhiên của bạn sẽ khác, vì cái này là ngẫu nhiên.

Hàm abs() trong PHP

Hàm abs() dùng để lấy giá trị tuyệt đối của một giá trị. Nếu còn nhớ môn toán hồi cấp 2, bạn sẽ hiểu giá trị tuyệt đối là gì.

Dành cho những ai chưa rõ:
  • Giá trị tuyệt đối của 0 là 0
  • Giá trị tuyệt đối của một số dương A là chính số A đó
  • Giá trị tuyệt đối của số âm X là số dương Y sao cho X + Y = 0
Ví dụ giá trị tuyệt đối của 3 là 3, của - 2.5 là 2.5

Cú pháp trong PHP: abs(số)

Thông tin kỹ thuật:
  • Trả về giá trị là số.
  • Nếu tham số dầu vào là dạng float, giá trị trả về cũng ở dạng float. Nếu tham số đầu vào là số thực, giá trị trả về cũng là số thực.
  • Phiên bản PHP yêu cầu: 4 trở lên.
Ví dụ:

<?php
echo(abs(6) . "<br>");
echo(abs(-9) . "<br>");
echo(abs(-3.1) . "<br>");
echo(abs(3.1));
?>

Kết quả:

6
9
3.1
3.1

Tự thiết kế hàm riêng

Bạn có tự tay thiết kế được hàm riêng giống hàm abs() trong PHP không? Câu trả lời là có. Rất đơn giản thôi. Dưới đây tôi sẽ trình bày một cách:

<?php
function GT_TD($x) {
    if ($x>=0) {$y = $x;} else {$y = (-1) * $x;}
    return $y;
}

echo(GT_TD(6) . "<br>");
echo(GT_TD(-9) . "<br>");
echo(GT_TD(-3.1) . "<br>");
echo(GT_TD(3.1));
?>

Chạy đoạn code trên bạn sẽ thấy nó cho kết quả tương tự hàm abs().

Saturday, January 24, 2015

Thực hành: sắp xếp mảng trong PHP không cần dùng hàm

Trong PHP bạn có đầy đủ các hàm sắp xếp mảng, điều đó có nghĩa là bình thường khi cần thiết bạn sẽ áp dụng các hàm đó thôi, để tiết kiệm thời gian và công sức - không phải gõ code thuần để làm lại việc này nữa. Bạn lại hỏi mình, thế bài viết này có ý nghĩa gì? Câu trả lời là: luyện tư duy.

Điều quan trọng nhất trong lập trình đó là tư duy và chăm chỉ, cả hai cái đều bổ sung cho nhau rất tốt. 

Nếu có tư duy đúng bạn có thể chuyển đổi bài toán sang bất kỳ ngôn ngữ nào.

Giờ chúng ta đi vào vấn đề chính. Giả dụ tôi có hàm như sau: 

$bang_diem = array(7, 5.5, 9, 6, 7.2, 7.8, 10, 5);

Bạn thấy rằng hàm này không được sắp xếp có thự tự, giờ chúng ta phải xếp lại theo thứ tự tăng dần mà không được dùng hàm xây dựng sẵn là sort()

Ý tưởng: theo thứ tự tăng dần có nghĩa là cái bé nhất xếp đầu tiên, tiếp theo là cái lớn hơn cái bé nhất nhưng lại nhỏ hơn những cái còn lại, cứ thế cho đến phần tử cuối cùng. 

Chúng ta tưởng tượng giống như việc xếp hàng ngày xưa, người nhỏ nhất ở đầu, nhỡ mà trong khi xếp hàng, chúng ta thấy ai nhỏ hơn mà lại ở phía sau ta bảo họ đổi chỗ lên trên. 

Hoặc chúng ta làm thế này, ta tìm người thấp nhất bảo họ đứng ra một chỗ, tiếp theo với những người còn lại chúng ta lại tiếp tục tìm người thấp nhất trong số đó rồi bảo họ xếp tiếp người đầu tiên vừa được cho ra riêng một chỗ. Cứ làm như thế chúng ta có được một hàng có thứ tự cao dần về phía sau.

Như vậy có thể nói hàm sắp xếp theo thứ tự có thể quy về cách thức tìm giá trị cực đại hoặc cực tiểu.

Theo yêu cầu của đề bài là theo thứ tự tăng dần nên chúng ta sẽ phải tìm giá trị cực tiểu n lần (với n là số phần tử của mảng)

Đây là đoạn code giúp tìm giá trị nhỏ nhất của mảng:

$bang_diem = array(7, 5.5, 9, 6, 7.2, 7.8, 10, 5);

$clength = count($bang_diem);

for($x = 0; $x < $clength; $x++) {

        $min=$bang_diem[$x];

            for($y = 0; $y < ($clength); $y++) {

                if ($min > $bang_diem[$y]) {

                    $min = $bang_diem[$y];

}}}

Giải thích:
  • Đầu tiên để đếm số phần tử của mảng ta dùng hàm count.
  • Dùng 2 vòng lặp for lồng nhau để tiến hành so sánh.
  • Gán $min có giá trị là phần tử đầu tiên, sau đó đem phần tử đó so sánh với các phần tử còn lại của mảng, bất cứ khi nào $min lớn hơn một phần từ nào đó nghĩa là $min vẫn chưa phải nhỏ nhất thì khi ấy $min được gán giá trị nhỏ hơn này. if ($min > $bang_diem[$y]) {$min = $bang_diem[$y];}
  • Quá trình so sánh này được lặp lại đúng bằng số phần từ của mảng, cho nên cuối cùng sau n lần nó sẽ tìm được đúng phần tử cần tìm - là phần tử nhỏ nhất của mảng.
Vậy công việc tiếp theo là gì? Đó là chúng ta sẽ lôi phần tử nhỏ nhất này ra một chỗ khác. Cụ thể là nhồi nó vào mảng mới.

Tiện đây, tìm giá trị lớn nhất của mảng, ta chỉ việc đổi dấu là xong.

Tìm max:

$bang_diem = array(7, 5.5, 9, 6, 7.2, 7.8, 10, 5);

$clength = count($bang_diem);

for($x = 0; $x < $clength; $x++) {

        $max=$bang_diem[$x];

            for($y = 0; $y < ($clength); $y++) {

                if ($max < $bang_diem[$y]) {

                    $max = $bang_diem[$y];

}}}

Giờ ta đã tìm được giá trị nhỏ nhất của mảng, làm thế nào ta tìm được giá trị nhỏ thứ nhì? Cách dễ nhất là loại bỏ phần tử nhỏ nhất đầu tiên đi và lặp lại đoạn mã tìm giá trị nhỏ nhất, vì giá trị nhỏ nhất đầu tiên đã bị loại, giá trị nhỏ nhất mới chính là cái thứ nhì.

Nhưng trong khi chúng ta không biết hàm loại bỏ phần tử khỏi mảng thì phải dùng cách nào để biến giá trị nhỏ nhất không được xét tới nữa.

Đơn giản là gán giá trị nhỏ nhất đó thành giá trị lớn nhất.

Đây là toàn bộ đoạn code giúp bạn sắp xếp thứ tự tăng dần:

<?php
$bang_diem = array(7, 5.5, 9, 6, 7.2, 7.8, 10, 5);
$sap_xep = array();

$clength = count($bang_diem);

for($x = 0; $x < $clength; $x++) {
        $max=$bang_diem[$x];
            for($y = 0; $y < ($clength); $y++) {
                if ($max < $bang_diem[$y]) {
                    $max = $bang_diem[$y];}}}


for ($m = 0; $m < $clength; $m++) {
    for($x = 0; $x < $clength; $x++) {
        $min=$bang_diem[$x];
            for($y = 0; $y < ($clength); $y++) {
                if ($min > $bang_diem[$y]) {
                    $min = $bang_diem[$y];
}}}
$sap_xep[$m] = $min;
for($t = 0; $t < $clength; $t++) {if ($bang_diem[$t]==$min) {$bang_diem[$t]=$max;}}}


for($x = 0; $x < $clength; $x++) {
echo $sap_xep[$x];
echo ", ";}
?>

Bạn có thể thấy quá trình tìm min được lặp lại đúng bằng số phần tử của mảng. Phần tử nhỏ nhất được quẳng vào mảng mới $sap_xep theo thư tự tăng dần, vì vậy cuối cùng ta có được điều như ý.

Friday, January 23, 2015

Biến toàn cục - siêu toàn cục trong PHP

Biến siêu toàn cục được giới thiệu lần đầu trong PHP phiên bản 4.1.0, nó được xây dựng để cung cấp sẵn trong mọi trường hợp.

Biến toàn cục - siêu toàn cục trong PHP

Một số biến được xác định trước trong PHP là siêu toàn cục, điều này có nghĩa là nó luôn luôn được truy cập, không giới hạn - và bạn có thể truy cập nó trong bất cứ hàm nào, lớp nào hoặc file mà không cần làm điều gì đặc biệt

Những biến siêu toàn cục trong PHP là:

PHP $GLOBALS

$GLOBALS là biến siêu toàn cục, được sử dụng để truy cập các biến toàn cục từ bất cứ nơi nào trong đoạn mã PHP (bao gồm cả trong hàm và phương thức)

PHP lưu trữ tất cả các biến toàn cục trong mảng là $GLOBALS[index]. Chỉ số index nắm giữ thông tin tên của biến.

Ví dụ dưới đây sẽ cho bạn thấy làm cách nào sử dụng biến siêu toàn cục $GLOBALS:

<?php
$x = 6;
$y = 9;

function cong() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

cong();
echo $z; //kết quả là 15
?>


Trong ví dụ trên, từ khi z là một biến đại diện trong mảng $GLOBAL, nó có thể được truy cập bên ngoài hàm!

PHP $_SERVER

$_SERVER là biến siêu toàn cục trong PHP, nắm giữ thông tin về headers, paths và các mã lệnh cục bộ.

Ví dụ dưới đây trình bày cách sử dụng một số phần tử trong $_SERVER:

<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>


Và đây là kết quả của câu lệnh trên:

/php/demo_global_server.php
code.mangluoitoancau.com
code.mangluoitoancau.com
http://code.mangluoitoancau.com/php/demo_global_server.php
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36
/php/demo_global_server.php

PHP $_REQUEST

$_REQUEST được sử dụng để thu thập dữ liệu sau khi gửi đi từ form HTML.

Trong ví dụ bên dưới trình bày một form với một trường input và nút submit. Khi người dùng gửi dữ liệu bằng cách click vào submit, dữ liệu từ form được gửi tới file đặc biệt trong thuộc tính của action. Chúng tôi xử lý dữ liệu mà form gửi bằng chính bản thân nó, nếu bạn muốn xử lý bằng trang khác, thay đường dẫn của bạn vào. Tiếp đó, chúng tôi sử dụng biến siêu toàn cục $_REQUEST để thu thập dữ liệu từ trường input:

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Thu thập dữ liệu từ input
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Truong ten khong duoc dien";
} else {
echo $name;
}
}
?>

</body>
</html>

Sắp xếp các phần tử trong mảng (PHP)

Các phần tử của mảng có thể được sắp xếp theo thứ tự abc hoặc thứ tự số, theo chiều giảm dần hoặc tăng dần.

Hàm sắp xếp cho mảng

Trong bài viết này, chúng ta sẽ tìm hiểu một số hàm sắp xếp cho mảng dưới đây:
  • sort() - sắp xếp theo thứ tự tăng dần (tính theo giá trị)
  • rsort() - sắp xếp theo thứ tự giảm dần (tính theo giá trị)
  • asort() - sắp xếp mảng kết hợp theo thứ tự tăng dần, tính theo giá trị
  • ksort() - sắp xếp mảng kết hợp (liên kết) theo thứ tự tăng dần tính theo khóa
  • arsort() - sắp xếp mảng kết hợp giảm dần tính theo giá trị
  • krsort() - sắp xếp mảng theo thứ tự giảm dần tính theo khóa

Sắp xếp mảng theo thứ tự tăng dần - sort()

Ví dụ dưới đây sẽ sắp xếp các phần tử của mảng $lop_hoc theo thứ tự tăng dần của bảng chữ cái alphabe:

<?php
$lop_hoc = array("Tuấn", "Bình", "Mai");
sort($lop_hoc);

$clength = count($lop_hoc);
for($x = 0; $x < $clength; $x++) {
echo $lop_hoc[$x];
echo ",";}
?>

Khi bạn chạy đoạn code trên nó sẽ cho kết quả: Bình, Mai, Tuấn

Ví dụ dưới đây sắp xếp các phần tử của mảng bang_diem theo thứ tự tăng dần:

<?php
$bang_diem = array(7, 5.5, 9, 6, 7.2, 7.8, 10, 5);
sort($bang_diem);

$clength = count($bang_diem);
for($x = 0; $x < $clength; $x++) {
echo $bang_diem[$x];
echo " ,";}
?>

Khi chạy đoạn code trên bạn sẽ thấy kết quả như sau: 5 ,5.5 ,6 ,7 ,7.2 ,7.8 ,9 ,10

Sắp xếp theo thứ tự giảm dần - rsort()

Chúng ta lấy ví dụ của các phần ở trên, chỉ thay câu lệnh sắp xếp để xem kết quả sẽ thay đổi như thế nào:

<?php
$lop_hoc = array("Tuấn", "Bình", "Mai");
rsort($lop_hoc);

$clength = count($lop_hoc);
for($x = 0; $x < $clength; $x++) {
echo $lop_hoc[$x];
echo ", ";}
?>

Và đây là kết quả: Tuấn, Mai, Bình,

Cũng như vậy với đoạn code mẫu thử nghiệm với thứ tự giảm dần đối với mảng có chứa các giá trị là số:

<?php
$bang_diem = array(7, 5.5, 9, 6, 7.2, 7.8, 10, 5);
rsort($bang_diem);


$clength = count($bang_diem);
for($x = 0; $x < $clength; $x++) {
echo $bang_diem[$x];
echo ", ";}
?>

Đây là kết quả: 10, 9, 7.8, 7.2, 7, 6, 5.5, 5

Sắp xếp mảng liên kết theo giá trị - asort()

Ví dụ dưới đây sắp xếp mảng liên kết theo thứ tự tăng dần tính theo giá trị:

<?php
$tuoi = array("Ha Men"=>"29", "Duc Anh"=>"30", "Duc Hung"=>"25");
asort($tuoi);

foreach($tuoi as $x => $x_value) {
echo "Khóa=" . $x . ", Giá trị=" . $x_value;
echo "<br>";
}
?>

Và đây là kết quả:

Khóa=Duc Hung, Giá trị=25
Khóa=Ha Men, Giá trị=29
Khóa=Duc Anh, Giá trị=30

Sắp xếp mảng liên kết theo thứ tự tăng dần tính theo khóa

Chúng ta dùng hàm ksort() để làm điều này, vẫn lấy ví dụ trên để thử nghiệm code:

<?php
$tuoi = array("Ha Men"=>"29", "Duc Anh"=>"30", "Duc Hung"=>"25");
ksort($tuoi);
foreach($tuoi as $x => $x_value) {
echo "Khóa=" . $x . ", Giá trị=" . $x_value;
echo "<br>";
}
?>

Và đây là kết quả:

Khóa=Duc Anh, Giá trị=30
Khóa=Duc Hung, Giá trị=25
Khóa=Ha Men, Giá trị=29

Bạn thấy khóa được sắp xếp theo thứ tự tăng dần ( trong trường hợp này là của bảng chữ cái ABC)

Sắp xếp mảng liên kết theo thư tự giảm dần tính theo giá trị

Dưới đây là đoạn code mẫu, chúng ta sử dụng hàm arsort():

<?php
$tuoi = array("Ha Men"=>"29", "Duc Anh"=>"30", "Duc Hung"=>"25");
arsort($tuoi);

foreach($tuoi as $x => $x_value) {
echo "Khóa=" . $x . ", Giá trị=" . $x_value;
echo "<br>";
}
?>


Và đây là kết quả:

Khóa=Duc Anh, Giá trị=30
Khóa=Ha Men, Giá trị=29
Khóa=Duc Hung, Giá trị=25

Bạn có thể thấy giá trị giảm dần.

Sắp xếp mảng theo thứ tự giảm dần tính theo khóa

Dưới đây là code mẫu, chúng ta sử dụng hàm krsort()

<?php
$tuoi = array("Ha Men"=>"29", "Duc Anh"=>"30", "Duc Hung"=>"25");
krsort($tuoi);
foreach($tuoi as $x => $x_value) {
echo "Khóa=" . $x . ", Giá trị=" . $x_value;
echo "<br>";
}
?>

Và đây là kết quả:

Khóa=Ha Men, Giá trị=29
Khóa=Duc Hung, Giá trị=25
Khóa=Duc Anh, Giá trị=30

Bạn có thể thấy khóa giảm dần.

Câu lệnh trong JavaScript

Trong HTML, câu lệnh JavaScript được thực thi bởi trình duyệt web.

Câu lệnh JavaScript

Câu lệnh dưới đây nói cho trình duyệt hãy ghi dòng "Blog Mạng Lưới Toàn Cầu" vào phần tử HTML có id="website"

Ví dụ:

document.getElementById("website").innerHTML = "Blog Mạng Lưới Toàn Cầu";

Chương trình JavaScript

Hầu hết các chương trình JavaScript bao gồm nhiều câu lệnh JavaScript.

Các câu lệnh JavaScript được thực hiện thứ tự từng dòng một như trong code mà nó được viết ra.

Trong ví dụ bên dưới, x, y và z được nhận giá trị và cuối cùng giá trị của z được đưa ra màn hình:

Ví dụ:

var x = 7;
var y = 9;
var z = x + y;
document.getElementById("giatri").innerHTML = z;

Dấu chấm phẩy ;

Dấu chấm phẩy dùng để ngăn cách các câu lệnh trong JavaScript.

Thêm dấu chấm phẩy vào cuối mỗi câu lệnh cần thực thi:

a = 5;
b = 6;
c = a + b;


Khi được ngăn cách bằng dấu chấm phẩy, nhiều câu lệnh trên một dòng là được phép, ví dụ:

a = 5; b = 6; c = a + b;

Trên web, bạn có thể nhìn thấy các ví dụ không có dấu chấm phẩy. Câu lệnh cuối cùng không bắt buộc phải có dấu chấm phẩy, nhưng được khuyến cáo là nên dùng.

Các ký tự trắng (khoảng trắng) trong JavaScript

JavaScript bỏ qua các khoảng trắng. Bạn có thể thêm khoảng trắng để giúp các đoạn code dễ đọc hơn.

Những dòng dưới đây có ý nghĩa như nhau:

var person = "Đức Anh";
var person="Đức Anh";

Ngắt dòng và độ dài dòng trong JavaScript

Để được đọc dễ dàng hơn, các lập trình viên thường tránh viết nhiều hơn 80 ký tự trên một dòng.

Nếu một câu lệnh trong JavaScript không vừa đủ trong một dòng, cách hay hơn là bẻ gãy nó, sau một toán tử:

Ví dụ:

document.getElementById("website").innerHTML =
"Blog Mạng Lưới Toàn Cầu.";

Khối lệnh trong JavaScript

Các câu lệnh trong JavaScript có thể được nhóm lại với nhau thành khối bên trong dấu ngoặc nhọn { ... }

Mục đích của khối code dùng để xác định các câu lệnh được thực thi cùng lúc.

Một trong những nơi bạn có thể tìm thấy các câu lệnh được nhóm với nhau thành khối đó là hàm của JavaScript:

Ví dụ:

function myFunction() {
document.getElementById("website").innerHTML = "Blog Mạng Lưới Toàn Cầu.";
document.getElementById("hoten").innerHTML = "Nguyễn Đức Anh";
}

Về sau học các ngôn ngữ lập trình phía server, bạn sẽ thấy cấu trúc này rất giống hàm của PHP.

Các từ khóa trong JavaScript

Các câu lệnh trong JavaScript thường bắt đầu bằng từ khóa để xác định hành động nào được thực thi.

Dưới đây là một số các từ khóa chúng ta sẽ được tìm hiểu thêm sau này: break, continue, debugger, do...while, for, function, if ... else, return, switch...

Các từ khóa này sẽ không được phép sử dụng làm tên biến nữa (như kiểu phạm húy í!)

Cú pháp trong JavaScript

Cú pháp trong JavaScript là các quy tắc, cách thức làm thế nào các chương trình JavaScript được xây dựng.

Ngôn ngữ Javascript là gì?

Một ngôn ngữ máy tính là danh sách các hướng dẫn được thực thi bởi máy tính.

Trong một ngôn ngữ lập trình, những "phần hướng dẫn" được gọi là câu lệnh.

Javascript là một ngôn ngữ lập trình.

Các câu lệnh trong Javascript được ngăn cách với nhau bằng dấu chấm phẩy.

Ví dụ:

var x = 9;
var y = 3;
var z = x - y;


Trong HTML, JavaScript có thể được xử lý, thực thi bằng trình duyệt web (FireFox, Google Chorme, IE,..)

Câu lệnh trong JavaScript

Các câu lệnh JavaScript được tạo thành từ: Giá trị, Toán tử, Biểu thức, Từ khóa và Chú thích.

Giá trị trong JavaScript

Cú pháp của JavaScript định nghĩa 2 loại giá trị: Giá trị cố định và giá trị thay đổi. Giá trị cố định được gọi là hằng, giá trị thay đổi được gọi là biến.

Hằng trong JavaScript

Những luật quan trọng nhất khi viết các giá trị cố định:

Số được viết với dấu thập phân hoặc không có dấu thập phân.

10.50

1001


Chuỗi là văn bản, được viết trong dấu nháy kép hoặc dấu nháy đơn:

"Đức Anh Plus"

'Duc Anh Plus'

Biểu thức có thể là đại diện cho giá trị cố định:

5 + 6

5 * 10

Biến trong JavaScript

Trong ngôn ngữ máy tính, biến được sử dụng để lưu trữ dữ liệu.

Javascript sử dụng các biến từ khóa để định nghĩa các giá trị thay đổi.

Ký hiệu bằng được sử dụng để gán giá trị vào biến.

Trong ví dụ bên dưới, x là một biến. Sau đó chúng ta gán cho nó giá trị là Blog Mạng Lưới Toàn Cầu.

var x;

x = "Blog Mạng Lưới Toàn Cầu";

Toán tử trong JavaScript

JavaScript sử dụng toán tử gán ( = ) để gán gí trị cho biến:

var x = 7;
var y = 9;



JavaScript sử dụng các toán tử số học ( + - * / ) để tính toán các giá trị:

((7 + 9) * 3) / 6

Từ khóa trong JavaScript

Từ khóa trong JavaScript được dùng để xác định các hành động được thực hiện.

Ví dụ từ khóa var nói cho trình duyệt biết cần tạo một biến mới:

var x = 5 ;
var y = x + 3;

Chú thích trong JavaScript

Không phải tất cả các câu lệnh JavaScript đều được thực thi.

Code đứng sau 2 gạch xổ // hoặc nằm giữa /* và */ được xác định là comment.

Chú thích sẽ bị bỏ qua và không được thực thi:

var x = 7; // Câu lệnh này sẽ được thực thi

// var x = 6; Câu lệnh này không được thực thi

JavaScript là ngôn ngữ nhạy cảm với cách VIẾT HOA hay viết thường

Do vậy hai biến lastName và lastname là hai biến hoàn toàn khác nhau.

lastName = "Nguyễn";
lastname = "Trần";


Javascript sẽ không chuyển đổi cách viết VAR hoặc Var thành từ khóa var.

Thông thường, trong JavaScript, cách viết thường_Hoa dành cho tên biến rất phổ biến. Bạn sẽ thấy cách viết dưới dạng lastName được ưa dùng hơn lastname.

Thursday, January 22, 2015

Hàm trong PHP

Sức mạnh thực sự của PHP đến từ các hàm; nó có hơn 1000 hàm xây dựng sẵn cho bạn sử dụng.

Người dùng tự định nghĩa hàm

Bên cạnh các hàm xây dựng sẵn, chúng ta có thể tự tạo các hàm dùng cho riêng mình.

Hàm là khối lệnh có thể sử dụng nhiều lần trong chương trình (giúp bạn tiết kiệm thời gian gõ code cũng như chỉnh sửa, quản lý lỗi)

Hàm không được thực thi ngay lập tức khi trang được tải về.

Hàm chỉ được thực thi bằng lời gọi hàm.

Cách tạo một hàm do người dùng tự định nghĩa

Người dùng định nghĩa hàm thông qua từ khóa "function":

Cú pháp

function ten_ham() {
code thực thi
}


Chú ý: tên hàm chỉ có thể bắt đầu với ký tự hoặc dấu gạch dưới nhưng không được phép với số (0, 1,..,9)

Mẹo: nên đặt tên hàm gợi mở đến việc mà nó thực hiện!

Khác: tên hàm là tương đương với cả cách viết hoa và viết thường. Mặc dù vậy bạn vẫn nên thống nhất cách viết.

Trong ví dụ dưới đây, chúng tôi tạo hàm có tên "gui_thong_diep()". Sau tên hàm là dấu ngoặc nhọn mở ( { ) và kết thúc bằng dấu ngoặc đóng ( } ). Hàm sẽ gửi ra thông điệp "Chào mừng bạn đến với Blog Mạng Lưới Toàn Cầu!". Để gọi hàm, chỉ cần viết tên của nó ra là được:

Ví dụ

<?php
function gui_thong_diep() {
echo "Chào mừng bạn đến với Blog Mạng Lưới Toàn Cầu!";
}

gui_thong_diep(); // gọi hàm
?>

Tạo các hàm có đối số

Thông tin có thể gửi tới hàm thông qua đối số. Đối số nó hao hao giống biến mà bạn đã quen dùng trong PHP.

Đối số nằm trong ngoặc đơn ngay sau tên hàm. Bạn có thể thêm bao nhiêu đối số tùy ý, chỉ việc ngăn cách chúng với dấu phẩy.

Ví dụ dưới đây là hàm được xây dựng với một đối số là ($thu_nhap). Khi hàm thue_thu_nhap() được gọi, nó sẽ gửi thông tin của $thu_nhap đến hàm thue_thu_nhap(), sau đó hàm thue_thu_nhap() xử lý thông tin rồi trả vể kết quả.

Ví dụ:

<?php
function thue_thu_nhap($thu_nhap) {
echo ($thu_nhap * 2)/100;
}

thue_thu_nhap(5000);
?>


Kết quả sẽ là 100.

Ví dụ dưới đây sử dụng hàm có 2 đối số là ($thu_nhap và $bao_hiem)

<?php
function thue_thu_nhap($thu_nhap, $bao_hiem) {
$thue = ($thu_nhap * 2)/100;
echo "Thuế thu nhập: $thue. Bảo hiểm hàng tháng: $bao_hiem";
}

thue_thu_nhap(5000, 200);
?>

Đối số mặc định trong PHP

Ví dụ dưới đây đưa ra cách sử dụng đối số mặc định trong hàm, khi bạn không ghi rõ giá trị của đối số trong lời mời gọi hàm nó sẽ sử dụng đối số mặc định:

Ví dụ

<?php
function setHeight($minheight = 160) {
echo "Chiều cao là : $minheight <br>";
}

setHeight(170);
setHeight(); // Sẽ sử dụng đối số mặc định là 160
setHeight(180);
setHeight(165);
?>

Hàm PHP - trả về giá trị cụ thể

Để yêu cầu hàm trả về giá trị, chúng ta sử dụng câu lệnh return:

Ví dụ

<?php
function tinh_tong($x, $y) {
$z = $x + $y;
return $z;
}

echo "5 + 10 = " . tinh_tong(5, 10) . "<br>";
echo "7 + 13 = " . tinh_tong(7, 13) . "<br>";
echo "2 + 4 = " . tinh_tong(2, 4);
?>

Câu lệnh include và require trong PHP

Câu lệnh include (hoặc require) nhúng tất cả văn bản/code/thẻ của file cho trước vào file sử dụng lệnh include.

Nhúng file bằng include rất hữu ích khi bạn muốn đưa những đoạn code PHP, HTML hoặc văn bản vào nhiều trang khác nhau (chẳng hạn menu bạn nên include vì rất nhiều trang có menu và chúng đều giống nhau)

Câu lệnh include và require

Có thể chèn nội dung của một file PHP vào trang PHP khác (trước khi server thực thi nó) với câu lệnh include hoặc require.

Hai lệnh include và require có chức năng giống hệt nhau, ngoại trừ khi gặp lỗi:
  • require sẽ đưa ra cảnh báo nghiêm trọng và ngừng thực thi các mã kịch bản
  • include chỉ có cảnh báo thông báo lỗi và vẫn tiếp tục thực thi kịch bản bên dưới
Do vậy nếu bạn muốn quá trình thực thi tiếp tục và đưa ra nội dung cuối cùng cho user ngay cả khi file cần nhúng bị mất hay bị lỗi thì bạn nên sử dụng câu lệnh include. Ngược lại, trong các trường hợp như FrameWork, CMS hoặc các ứng dụng PHP phức tạp, bạn luôn phải sử dụng câu lệnh require để nhúng các file quan trọng trong quá trình thực thi. Điều này giúp bạn tránh ảnh hưởng đến các ứng dụng cần bảo mật và tính toàn vẹn khi không may một file quan trọng bị mất

Nhúng file tiết kiệm cho bạn rất nhiều thời gian. Bạn có thể tạo các file mẫu cho header, footer hoặc menu rồi nhúng nó vào toàn bộ trang web. Sau đó khi menu cần sửa chữa, bạn chỉ cần cập nhật file nhúng menu mà không cần vào từng trang để sửa.

Cú pháp:

include 'filename';

or

require 'filename';

Các ví dụ sử dụng lệnh include trong PHP

Ví dụ 1:

Tôi tạo footer mẫu cho toàn bộ trang:

<?php © 2013 - Bản quyền nội dung thuộc về Nguyễn Đức Anh - !ul5Q|H. Cung cấp bởi Blogger ?>

Để nhúng file footer bên trên vào trang, bạn sử dụng lệnh include:

<html>
<body>

<h1>Blog Mạng Lưới TOàn Cầu!</h1>
<p>Văn bản.</p>
<p>Văn bản khác.</p>
<?php include 'footer.php';?>

</body>
</html>


Ví dụ 2

Chúng ta tạo ra file munu mẫu gọi là menu.php

<?php
echo '<a href="/default.php">Home</a> -
<a href="/html/default.php">HTML</a> -
<a href="/css/default.php">CSS</a> -
<a href="/js/default.php">JavaScript</a> -
<a href="/php/default.php">PHP</a>';
?>

Tất cả các trang web phải sử dụng file menu này. Dưới đây trình bày cách thực hiện điều đó (chúng tôi sử dụng <div> để bao quanh, nó giúp bạn dễ dàng chỉnh style về sau này):

<html>
<body>

<div class="menu">
<?php include 'menu.php';?>
</div>

<h1>Blog Mạng Lưới Toàn Cầu!</h1>
<p>Văn bản.</p>
<p>Văn bản khác.</p>

</body>
</html>


Ví dụ 3

Chúng tôi tạo ra file gọi là "ebook.php", với một số biến được gán như sau:

<?php
$tac_gia='Harakumi Otoke';
$sach='Gió qua miền bóng tối';
?>


Sau đó chúng ta nhúng file "ebook.php", các biến có thế được gọi để sử dụng:

<html>
<body>

<h1>Welcome to my home page!</h1>
<?php include 'ebook.php';
echo "Tôi vừa mua cuốn sách ".$sách." của tác giả ".$tac_gia;
?>

</body>
</html>

Chốt hạ

Có 2 điều quan trọng nhất phải nhớ sau khi học xong về include và require đó là:
  • include và require giúp bạn tiết kiệm thời gian, công sức.
  • điểm khác biệt quan trọng nhất của include và require là khi xảy ra lỗi. Require thì ngừng thực thi, còn include thì vẫn tiếp tục. Do vậy các menu thường dùng include, trong khi kết nối cơ sở dữ liệu chúng ta lại dùng require.

Session trong PHP

Session được dùng để lưu trữ thông tin trong biến và sử dụng nó từ trang này sang trang khác. Các biến thông thường trong PHP chỉ làm việc tại trang đó, sáng trang khác sẽ mất, session thì không bị như thế.

Không giống cookie, thông tin không được lưu trong máy tính của người dùng.

Session trong PHP là gì?

Khi bạn làm việc với một ứng dụng nào đó, bạn mở nó ra, thực hiện một số thay đổi và rồi bạn đóng nó lại. Điều đó gọi là session - hiểu theo tiếng Việt nghĩa là phiên làm việc. Máy tính biết bạn là ai. Nó biết khi nào bạn bật ứng dụng và khi nào tắt. Nhưng trên internet có một vấn đề: máy chủ web không biết bạn là ai hoặc bạn làm cái gì, bởi địa chỉ HTTP không duy trì trạng thái.

Biến session giải quyết vấn đề này bằng cách lưu trữ thông tin user được dùng qua nhiều trang (ví du: username, màu sắc ưa thích, ...). Theo mặc định, các biến session vẫn còn tồn tại cho đến khi người dùng đóng trình duyệt.

Vì vậy biến session nắm giữ thông tin về một user nhất định và được sử dụng trên tất cả các trang trong ứng dụng đó

Cách tạo Session trong PHP

Bạn khởi tạo một session bằng cách dùng hàm session_start()

Biến session được gắn với biến toàn cục là $_SESSION

Bây giờ bạn hãy tạo một trang mới có tên "vidu_session1.php". Trong trang này, bạn tạo session PHP và khởi tạo một số biến session:

Ví dụ:

<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Set session variables
$_SESSION["doi_bong_yeu_thich"] = "Bác Xa";
$_SESSION["mon_the_thao_ua_thich"] = "Chạy bộ";
echo "Các biến session đã được tạo";
?>

</body>
</html>

Chú ý: hàm session_start() phải được viết đầu tiên trong trang, đứng TRƯỚC thẻ HTML

Lấy giá trị của biến session trong PHP

Tiếp theo chúng ta tạo trang thứ hai có tên "vidu_session2.php". Từ trang này, chúng ta truy cập thông tin session được tạo từ trang trước đó (vidu_session1.php).

Chú ý là tất cả giá trị của biến session được lưu trữ trong biến toàn cục có tên $_SESSION:Ví dụ:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Đưa ra màn hình các biến session được khởi tạo từ trang trước

echo "Đội bóng yêu thích là: " . $_SESSION["doi_bong_yeu_thich"] . ".<br>";
echo "Môn thể thao yêu thích là: " . $_SESSION["mon_the_thao_ua_thich"]. ".";

?>

</body>
</html>

Một cách khác để đưa ra tất cả các giá trị của biến session (tương ứng với một user nào đó) bằng đoạn code sau: Ví dụ:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>

</body>
</html>

Nó làm việc thế nào? Làm sao để nó biết được tôi?

Hầu hết session tạo khóa user trên máy tính giống như sau: 16483986038gjfj4996qeroi58. Sau đó khi session được mở trên trang khác, nó sẽ quét thông tin của khóa này. Nếu phù hợp, nó sẽ cho phép truy cập session, nếu không nó sẽ khởi tạo session mới.

Thay đổi biến Session

Để thay đổi biến session, đơn giản chỉ cần ghi đè lên nó, ví dụ:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// to change a session variable, just overwrite it
$_SESSION["doi_bong_yeu_thich"] = "Rê An";
print_r($_SESSION);
?>

</body>
</html>

Hủy bỏ Session 

Để loại bỏ tất cả các biến session toàn cục và hủy session, chúng ta sử dụng hàm session_unset() và session_destroy():

Ví dụ:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Loại bỏ tất cả các session
session_unset();

// Hủy các session
session_destroy();
?>

</body>
</html>

Cookies trong PHP

Cookies thường được dùng để nhận dạng, xác định user.

Vậy cookies là gì?

Cookie được dùng để xác định user. Về bản chất cookie là một file nhỏ mà server nhúng vào máy tính người dùng. Mỗi khi cùng máy tính đó truy cập một trang bằng trình duyệt, nó cũng gửi cookie. Với PHP bạn có thể tạo và nhận các giá trị của cookie.

Tạo cookies với PHP

Cookie được tạo bởi hàm setcookie()

Cú pháp:

setcookie(tên, giá trị, ngày hết hạn, đường dẫn, tên miền, secure, httponly);

Chỉ tham số tên là bắt buộc, những cái còn lại là tùy chọn.

Nhận và tạo cookies với PHP

Ví dụ dưới đây tạo cookies với tên (cookie named) là user và giá trị tương ứng là "Đức Anh". Cookies này sẽ hết hạn trong vòng 15 ngày (86400 * 15). Ký hiệu "/" nghĩa là cookies có giá trị trên toàn bộ website (nếu bạn không muốn thế, bạn có thể chọn thư mục hoặc bài viết cố định nào đó trong trang):

<?php
$cookie_name = "user";
$cookie_value = "Đức Anh";
setcookie($cookie_name, $cookie_value, time() + (86400 * 15), "/"); // 86400 giây tương đương 1 ngày
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named chưa được tạo!";
} else {
echo "Cookie '" . $cookie_name . "' đã được tạo!<br>";
echo "Giá trị của nó là: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>


Chú ý: Hàm setcookie() phải xuất hiện TRƯỚC thẻ <html>

Khi thử trên trình duyệt lần đầu đoạn code trên bạn sẽ không thấy hiện cookie name và value, bạn nhấn F5 để reload lại sẽ thấy. Hôm sau bật trình duyệt lên cũng vẫn thấy. Tuy nhiên sang đến ngày thứ 16 sẽ không thấy nữa vì quá hạn của cookies rồi nhé.

Thay đổi cookies

Để thay đổi cookies, bạn chỉ cần thiết lập lại các giá trị lần nữa, nó không khác quá trình khởi tạo tí nào cả:
Ví dụ:

<?php
$cookie_name = "user";
$cookie_value = "Đức Hùng";
setcookie($cookie_name, $cookie_value, time() + (86400 * 14), "/");
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' chưa được tạo!";
} else {
echo "Cookie '" . $cookie_name . "' đã được thiết lập!<br>";
echo "Giá trị của nó là: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>

Xóa cookie

Để xóa cookie, chúng ta sử dụng hàm setcookie() với ngày hết hạn là thời điểm nào đó trong quá khứ:

Ví dụ:

<?php
// Thiết lập ngày hết hạn là một giờ trước đó
setcookie("user", "", time() - 3600);
?>
<html>
<body>

<?php
echo "Cookie 'user' đã được xóa.";
?>

</body>
</html>

Kiểm tra xem Cookies có được cho phép hay không

Một số trình duyệt cho phép người dùng ngăn không lưu cookies vì lý do riêng tư. Đoạn code nhỏ dưới đây giúp chúng ta kiểm tra xem cookies có được phép hay không, nó làm điều đó bằng cách tạo một cookies rồi sau đó đếm xem có bất kỳ cookie nào hay chưa? Cơ mà cách này là xem cookies đã từng được phép tạo trên máy tính này hay không thì đúng hơn là xem tại thời điểm hiện tại có được phép tạo cookies.

Ví dụ:

<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>

<?php
if(count($_COOKIE) > 0) {
echo "Cookies được phép.";
} else {
echo "Cookies đã bị vô hiệu hóa.";
}
?>

</body>
</html>

Cú pháp trong PHP

Các đoạn mã kịch bản của PHP được thực thi trên máy chủ và kết quả trả về dưới dạng thuần HTML được gửi cho trình duyệt.

Cú pháp cơ bản

Các đoạn mã kịch bản PHP được có thể được đưa vào bất cứ nơi nào trong tài liệu. Đoạn mã PHP bắt đầu bằng <?php, và kết thúc bằng ?>

Ví dụ:

<?php 
       các đoạn code được viết ở đây 
?> 

File PHP được lưu dưới dạng ".php" thí dụ index.php

Một trang PHP thông thường bao gồm các đoạn mã HTML và một số kịch bản PHP.

Dưới đây là đoạn mã PHP sử dụng câu lệnh đơn giản và quen thuộc echo để đưa dữ liệu ra màn hình:

<!DOCTYPE html>
<html>
<body>

<h1>Trang PHP Đầu Tiên Của Tôi</h1>

<?php
echo "Chào mọi người!";
?>

</body>
</html>


Câu lệnh php kết thúc với dấu chấm phẩy ;

Lỗi quên dấu ; là lỗi rất hay gặp khi mới gõ code php.

Chú thích trong PHP

Chú thích khi gõ code rất quan trọng, nhất là với các ngôn ngữ lập trình vốn hàm chứa nhiều ý nghĩa. Chú thích giúp việc xem lại code dễ hiểu hơn, thuận lợi cho việc chỉnh sửa và làm việc nhóm. PHP có vài cách chú thích và bạn có thể đọc đầy đủ qua liên kết vừa dẫn.

Chú thích một dòng với dấu # hoặc //, tôi hay dùng // để chú thích một dòng hơn.

Chú thích nhiều dòng phải để trong /* chú thích của bạn ở đây */

Viết hoa và viết thường các câu lệnh trong PHP

Trong PHP, tất cả các từ khóa (ví dụ if, else, while, echo, etc.), lớp, hàm và các hàm định nghĩa bởi người dùng bạn đều có thể viết thường hay hoa.

Trong ví dụ bên dưới, cả 3 câu lệnh echo đều hợp lệ và cho cùng kết quả:<!DOCTYPE html>
<html>
<body>

<?php
ECHO "Hello World!<br>";
echo "Hello World!<br>";
EcHo "Hello World!<br>";
?>


</body>
</html>\

Dĩ nhiên, đa số mọi người ưa dùng cách viết thường cho những đoạn code.

Tuy nhiên các biến thì phân biệt viết hoa và thường. 

Ví dụ:

<?php

$duc_anh = "đẹp trai";

echo $duc_anh;
echo $Duc_Anh;
echo $DUC_ANH;

?>

Chỉ có cái đầu cho kết quả, còn hai cái bên dưới không cho kết quả gì.

Vòng lặp trong PHP

Nếu bạn làm cái gì đó độ 1000 lần trong ngày bạn sẽ chán ngấy và khả năng sai sót rất cao (trừ việc thở). Máy móc thì không như vậy, trong các dây chuyển đóng chai, một thiết bị lặp đi lặp lại công việc của nó vài nghìn lần mỗi tiếng theo cách không thể chính xác hơn. Vâng đó là điểm mạnh của máy. [Kết thúc chém gió]

Trong bài viết này chúng ta sẽ nói về cách làm thế nào để thực hiện vòng lặp trong PHP, tức là chỉ định nó lặp lại một việc gì đấy mà chúng ta muốn.

Vòng lặp for

Cú pháp:

for (biến đếm; biến kiểm tra; giá trị tăng của biến) {
        đoạn code thực thi;
}

Ví dụ:

<?php 
echo "Các số chẵn từ 0 đến 20 là:<br>";
for ($x = 0; $x <= 20; $x+=2) {
echo "$x <br>";
?>  

Biến đếm bắt đầu từ 0, kết thúc tại 20, với bước nhảy là 2, vì vậy nó sẽ lần lượt in ra các giá trị: 0, 2 , 4, 6, 8,..., cho đến giá trị cuối cùng là 20.

Thông thường bước nhảy không phải là 2, mà là 1, chẳng hạn khi tôi muốn in ra danh sách tên học sinh của một lớp học.

Vòng lặp foreach

Vòng lặp foreach chỉ dùng cho mảng trong php, nó dùng để lặp lại cặp khóa / giá trị trong mảng.

Cú pháp:

foreach ($mang as $gia_tri) {
  code thực thi;
}

Đối với mỗi lần lặp, giá trị của các phần tử mảng hiện tại được gán cho $gia_tri và con trỏ mảng được di chuyển tăng một, việc đó được lặp lại cho đến khi nó đạt đến các phần tử mảng cuối cùng . Ví dụ sau đây chứng minh vòng lặp sẽ đưa ra các giá trị của mảng cho trước ($màu) :

<?php
$mau = array("đỏ", "xanh lá cây", "xanh da trời", "vàng");

foreach ($mau as $gia_tri) {
echo "$gia_tri <br>";
}
?>

Mảng trong PHP

Nói chung mô tả về mảng khá khó hiểu, nhìn qua ví dụ về mảng thì đơn giản hơn, đại khái mảng trong PHP có khả năng lưu trữ nhiều dữ liệu trong chỉ một biến.
Ví dụ:

<?php
$sach = array("Lập trình web với PHP", "HTML - CSS", "Javascript cơ bản");
echo "Để có khả năng tự code được trang web tốt bạn cần đọc hết 3 cuốn sách sau của nhà trường: " . $sach[0] . ", " . $sach[1] . " và " . $sach[2] . ".";
?>

Vậy thì mảng là gì?  

Mảng là biến đặc biệt có khả năng lưu trữ nhiều giá trị tại một thời điểm.

Giả dụ bạn có danh sách các học sinh trong lớp, dùng mảng để lưu là ý tưởng hay thay vì phải sử dụng khoảng 30 đến 40 biến, bạn chỉ cần sử dụng một mảng chung có tên $lop_hoc (bạn có thể đặt tên khác nếu muốn).

Bạn lấy giá trị trong mảng thế nào? Nếu để ý ví dụ trên bạn có thể nhận ra, mảng được truy xuất thông qua số chỉ mục của phần tử, lưu ý chỉ mục đầu tiên bắt đầu từ 0, nghĩa là phần tử đầu tiên của mảng $a sẽ là $a[0];

Cách tạo mảng trong PHP

Trong PHP, hàm array() dùng để tạo mảng, có 3 kiểu mảng:
  • Mảng chỉ mục: mảng với chỉ mục là số
  • Mảng liên kết (còn có tên mảng kết hợp): mảng với khóa là ký tự
  • Mảng nhiều chiều: mảng mà bên trong nó có một hoặc nhiều mảng khác

Cách thêm dữ liệu vào trong mảng

Phần này rất quan trọng nhé, vì có mảng rồi thì phải biết cách thêm giá trị vào từng phần tử trong mảng.

Cách thứ nhất:

$sach = array("Lập trình web với PHP", "HTML và CSS", "Javascript cơ bản");

Lúc này mảng sẽ có 3 phần tử theo thứ tự và được chỉ mục được bắt đầu tự động từ 0, rồi sau đó là 1 và 2.

Cách thứ hai:

$sach[0] = "Lập trình web với PHP"
$sach[1] = "HTML - CSS"
$sach[2] = "Javascript cơ bản"

Cách này chỉ định phần tử cụ thể được gán giá trị nào.

Độ dài của mảng

Nhiều khi bạn muốn biết mảng có bao nhiêu phần tử, chẳng hạn mảng lớp học thì có bao nhiêu học sinh trong đó. Nhiều khi tìm độ dài của mảng không phải dùng cho bản thân nó mà thông tin này sẽ được dùng trong các vòng lặp để duyệt quả các phần tử mà tẹo nữa bạn sẽ thấy ngay trong phần kế tiếp.

PHP dùng hàm count() để đếm phần tử của mảng, ví dụ: 

$sach = array("Lập trình web với PHP", "HTML và CSS", "Javascript cơ bản");
echo count($sach);

Kết quả sẽ là 3.

Dùng vòng lặp để duyệt qua các phần tử trong mảng

Làm sao để bạn lôi ra từng phẩn tử trong mảng rồi xuất ra màn hình. Trong ví dụ này, chúng tôi kết hợp sử dụng độ dài mảng, vòng lặp for, Ví dụ:

$sach = array("Lập trình web với PHP", "HTML và CSS", "Javascript cơ bản");

$l = count($sach);

for ($i = 0; $i < $l; $i++) {
    echo $sach[$i];
    echo "<br>";
}

Mảng liên kết trong PHP

Mảng liên kết dùng từ khóa để kết nối giá trị với phần tử của mảng. Có hai cách để tạo mảng liên kết. Cách thứ nhất:

$gio_hang = array("Quần"=>"3", "Áo"=>"2", "Bút bi"=>"5");

Cách thứ hai:

$gio_hang[Quần] = 3;
$gio_hang[Áo] = 2;
$gio_hang[Bút bi] = 5;

Từ khóa trong mảng liên kết có thể sử dụng như trong đoạn mã sau:

$gio_hang = array("Quần"=>"3", "Áo"=>"2", "Bút bi"=>"5");
echo $gio_hang['Áo'];

Kết quả sẽ là 2.

Sử dụng vòng lặp foreach trong mảng liên kết

Dưới đây là đoạn code mẫu, chú ý hàm foreach, từ khóa as và dấu =>

$gio_hang = array("Quần"=>"3", "Áo"=>"2", "Bút bi"=>"5");

foreach($gio_hang as $x => $x_value) {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}

Đây là kết quả:

Key=Quần, Value=3
Key=Áo, Value=2
Key=Bút bi, Value=5

Wednesday, January 21, 2015

Tổng hợp các toán tử trong PHP

Trước đây Blog Mạng Lưới Toàn Cầu có viết một bài về toán tử so sánh và toán tử logic trong PHP, thực tế PHP còn nhiều toán tử khác mà hôm nay tôi sẽ cùng bạn khám phá tiếp theo cách đầy đủ toàn diện hơn.

Cụ thể, chúng ta sẽ cùng tìm hiểu các loại toán tử sau:
  • Toán tử số học
  • Toán tử gán
  • Toán tử so sánh
  • Toán tử tăng / giảm
  • Toán tử logic
  • Toán tử liên quan đến chuỗi
  • Toán tử liên quan đến mảng

Toán tử số học

Đây là kiểu toán tử chúng ta hay gặp nhất, nó thao tác trên các con số, đó là những phép toán cộng, trừ, nhân chia hết sức quen thuộc.

Toán tử Tên Ví dụ Mô tả
+ Cộng $x + $y Biến x cộng với biến y
- Trừ $x - $y Biến x trừ biến y
* Nhân $x * $y Biến x nhân biến y
/ Chia $x / $y Biến x chia biến y
% Lấy phần dư $x % $y Lấy phần dư của kết quả biến x chia cho biến y

Toán tử gán

Toán tử gán sử dụng dấu =, điều này có nghĩa là các toán hạng bên trái được thiết lập với giá trị của biểu thức bên phải.

Gán Tương Đương Mô tả
x = y x = y Toán hạng bên trái được thiết lập với giá trị của biểu thức bên phải
x += y x = x + y Cộng
x *= y x = x * y Trừ
x /= y x = x / y Chia
x %= y x = x % y Lấy phần dư 

Toán tử so sánh

Toán tử Tên Ví dụ Kết quả
== Bằng $x == $y Trả về kết quả True nếu biến x bằng với biến y
=== Giống hệt nhau $x === $y Trả về kết quả True nếu biến x bằng biến y và có cùng định dạng
!= Không bằng, không giống, khác $x != $y Trả về kết quả True nếu biến x khác biến y
<> Không bằng, không giống, khác $x <> $y Trả về kết quả True nếu biến x khác biến y
!== Hoàn toàn khác nhau $x !== $y Trả về kết quả True nếu biến x khác biến y hoặc no có 2 định dạng khác nhau
> Lớn hơn $x > $y Trả về kết quả True nếu biến x lớn hơn biến y
< Nhỏ hơn $x < $y Trả về kết quả True nếu biến x nhỏ hơn biến y
>= Lớn hơn hoặc bằng $x >= $y Trả về kết quả True nếu biến x lớn hơn hoặc bằng biến y
<= Nhỏ hơn hoặc bằng $x <+ $y Trả về kết quả True nếu biến x nhỏ hơn hoặc bằng biến y

Toán tử logic

Toán tử Tên Ví dụ Kết quả
and $x and $y Trả về kết quả True khi và chỉ khi x và y đều đúng
or Hoặc $x or $y Trả về kết quả True nếu chỉ cần một trong hai biến đúng
xorXor $x xor $y Trả về kết quả True nếu x hoặc y đúng nhưng không phải cả hai
&& $x && $y Trả về kết quả True khi và chỉ khi x và y đều đúng
|| Hoặc $x || $y Trả về kết quả True nếu chỉ cần một trong hai biến đúng
! Phủ định !$x Trả về kết quả True nếu x là FALSE

Toán tử tăng và giảm

Toán tử Tên Mô tả
++$x Cộng 1 đơn vị Lấy giá trị của biến x cộng thêm 1 rồi gán lại cho x
$x++ Cộng 1 đơn vị Trả lại biến $x, sau đó mới cộng thêm 1
--$x Trừ 1 đơn vị Lấy giá trị của biến x trừ đi 1 rồi gán lại cho x
$x-- Trừ 1 đơn vị Trả lại biến $x, sau đó mới trừ đi 1

Toán tử liên quan đến chuỗi

Toán tử Tên Ví dụ Kết quả
. Nối chuỗi $text1.$text2 Nối chuỗi text2 vào sau chuỗi text1, tex1 và text2 vẫn giữ nguyên giá trị
.= Nối và gán $text1.=$text2 Nối chuỗi text2 vào sau text1, text2 giữ nguyên giá trị, còn text1 được gán giá trị của chuỗi được nối

Toán tử liên quan đến mảng

Toán tử Tên Ví dụ Kết quả
+ $x + $y Trả về kết quả tổng hợp hai mảng x và y
== Bằng $x == $y Trả về kết quả True nếu hai mảng x và y có cùng cặp khóa và giá trị
===Giống y nhau $x === $y Trả về kết quả True nếu hai mảng x và y có cùng cặp khóa/giá trị và mảng có cùng thứ tự, định dạng
!= Không bằng $x != $y Trả về kết quả True khi mảng x không bằng mảng y
<> Không bằng $x <> $y Trả về kết quả True khi mảng x không bằng mảng y
!== Khác nhau hoàn toàn $x !== $y Trả về kết quả True nếu x khác hoàn y

Các hàm xử lý chuỗi trong PHP

Các hàm xử lý chuỗi trong PHP là một trong các hàm quan trọng không thể thiếu khi bạn muốn làm việc với các ký tự. Sau đây Blog Mạng Lưới Toàn Cầu sẽ cùng bạn tìm hiểu các hàm cơ bản nhất.

Lấy độ dài ký tự của một chuỗi

Ví dụ:

<?php
echo strlen("Duc Anh"); // kết quả của đoạn code này là 7, bao gồm cả khoảng trống
?>

Với tiếng Việt có dấu, số ký tự tăng thêm tương ứng với số ký tự phải gõ, ví dụ:

<?php
echo strlen("Duc Anh"); // kết quả không phải 7, mà là 10, vì Đức Anh, gõ theo kiểu Telex sẽ là DDuwcs Anh
?>

Đếm số từ trong chuỗi

Ví dụ:

<?php
echo str_word_count("Nguyen Duc Anh"); // cho kết quả là 3
?>

Tuy nhiên với ký tự có dấu lại khác

<?php
echo str_word_count("Nguyễn Đức Anh"); // cho kết quả là 6
?>

Đảo chuỗi

Ví dụ:

<?php
echo strrev("Duc Anh"); // cho kết quả là hnA cuD
?>

Với ký tự có dấu kết quả bị lỗi:

<?php
echo strrev("Đức Anh"); // kết quả bị lỗi ở phần có dấu hnA c�����
?>

Tìm kiếm từ hoặc dãy ký tự trong chuỗi

Hàm này dùng để tìm kiếm xem có từ nào đó hoặc dãy ký tự nằm trong chuỗi hay không? nếu có nó sẽ trả về kết là số nguyên dương (là số ký tự đứng trước từ tìm thấy), nếu không, nó sẽ trả về kết quả là FALSE.

Ví dụ:

<?php
echo strpos("Duc Anh dep trai", "dep trai"); // kết quả sẽ là 8, điều này có nghĩa là từ "dep trai" có nằm trong chuỗi trên và có 8 ký tự đứng trước nó bao gồm cả ký tự trống
?>

Nếu từ cần tìm nằm ngay đầu, kết quả trả về sẽ 0, ví dụ

<?php
echo strpos("Duc Anh dep trai", "Duc Anh"); // bạn sẽ nhận được kết quả là 0
?>

Với ký tự có dấu, hàm vẫn hoạt động tốt, chỉ khác là số ký tự sẽ thay đổi giống như hàm strlen()

Ví dụ:

<?php
echo strpos("Đức Anh đẹp trai", "đẹp trai"); // sẽ cho kết quả là 11, chứ không phải 8. Nếu mục đích là tìm xem có từ đẹp trai hay không, thì 8 hay 11 có cùng ý nghĩa.
?>

Thay thế từ trong chuỗi bằng từ khác

Ví dụ:

<?php
echo str_replace("Anh", "Hùng", "Nguyễn Đức Anh"); // cho kết quả là: Nguyễn Đức Hùng
?>

Cú pháp dễ nhận thấy qua ví dụ: từ cần bỏ đi là Anh, từ được thêm mới là Hùng, chuỗi cần đối chiếu là: Nguyễn Đức Anh

Nếu từ cần bỏ đi không tìm thấy trong chuỗi thì chuỗi đó vẫn giữ nguyên, ví dụ:

<?php
echo str_replace("Anfd", "Hùng", "Nguyễn Đức Anh"); // vẫn cho kết quả là Nguyễn Đức Anh vì Anfd không tồn tại trong chuỗi
?>

Trường hợp này thì sao, bạn hãy thử đoán kết quả nhé:

<?php
echo str_replace("An", "Hùng", "Nguyễn Đức Anh");
?>

Không như dự đoán của tôi là không có gì thay đổi, thực tế chuỗi vẫn thấy từ An và kết quả của đoạn trên sẽ là: Nguyễn Đức Hùngh