Bài 27 - PHP basci buổi 6 - DỮ LIỆU KIỂU MẢNG & CÁC HÀM HỖ TRỢ MẢNG

 

LAB PHP (CB) 6

DỮ LIỆU KIỂU MẢNG & CÁC HÀM HỖ TRỢ MẢNG TRONG PHP

A – LÝ THUYẾT

I – LÀM VIỆC VỚI MẢNG

1 – Định nghĩa mảng trong PHP

Mảng trong php là một danh sách các phần tử có hoặc không cùng kiểu dữ liệu. Mảng có thể là mảng một chiều hay nhiều chiều. Mảng  có 2 thành phần là chỉ mục (key) và giá trị (value). Chỉ mục (key) có thể là số nguyên hoặc là chuỗi

Cú pháp khai báo một mảng (Cách 1)

$mang = array(phan_tu_1, phan_tu_2,…, phan_tu_n);

Với phan_tu_1 (phần tử đầu tiên trong mảng) có chỉ mục (key) là 0 và giá trị (value) là phan_tu_1

 

Cú pháp khai báo một mảng (Cách 2)

$mang = array();

$mang[] = phan_tu_1;

$mang[] = phan_tu_1;

$mang[] = phan_tu_n;

Với phan_tu_1 (phần tử đầu tiên trong mảng) có chỉ mục (key) là 0 và giá trị (value) là phan_tu_1

 

2 – Khái niệm mảng kết hợp trong PHP

Mảng kết hợp là mảng chứa các phần tử có các chỉ mục (key) là các chuỗi


 

3 – Thêm một phần tử mới vào mảng, xuất ra giá trị của một phần tử trong mảng

Để thêm một phần tử mới vào mảng chúng ta sử dụng cú pháp sau:

Cú pháp:

$bien_mang[chi_muc] = gia_tri

            Nếu chỉ mục để trống thì giá trị mới thêm vào sẽ được mảng tự động đánh số chỉ mục mới, tiếp theo so với các chỉ mục đã tồn tại trước đó trong mảng

 

Để lấy được giá trị của một phần tử trong mảng chúng ta sử dụng cú pháp sau:

Cú pháp:

$bien_mang[chi_muc]

 

4 – Duyệt các giá trị của một mảng

Cú pháp duyệt mảng thông thường:

Foreach($array as $value){

Thực thi hành động

}

Trong đó $array là mảng cần duyệt và $value là biến lưu giá trị tạm thời của mỗi phần tử

 

Cú pháp duyệt mảng thông thường:

Foreach($array as $key=>$value){

Thực thi hành động

}

Trong đó $array là mảng cần duyệt, $key là biến lưu key tạm thời và $value là biến lưu giá trị tạm thời tương ứng của mỗi phần tử

 

II – CÁC HÀM HỖ TRỢ MẢNG

1 – Hàm Print_r()

Cho phép duyệt đệ quy và hiển thị thông tin của một giá trị

 <?php

$mang = array("trung", "tâm", "Loan Hà");

print_r($mang);

//Array ( [0] => trung [1] => tâm [2] => Loan Hà )

?>

2 – Hàm sort()

Hàm sort() dùng để sắp xếp các phần tử trong mảng với giá trị tăng dần

 

 

3 – Hàm rsort()

Hàm rsort() dùng để sắp xếp các phần tử trong mảng với giá trị giảm dần

 

 

4 – Hàm count

Hàm count() dùng để đếm số phần tử của một mảng. Nó sẽ nhận vào một mảng và trả về một số nguyên bằng với số phần tử tồn tại trong mảng đó

4 – Hàm array_merge()

Hàm array_merge() dùng để gộp mảng. Nó sẽ nhận vào 2 mảng và trả về một mảng bao gồm tất cả các phần tử của mỗi mảng, các phần tử này có chỉ mục (key) được giữ nguyên

·         Nếu 2 mảng có chỉ mục (key) bị trùng nhau và là dạng chuỗi thì giá trị tương ứng của key đó ở mảng 1 sẽ bị ghi đè bởi giá trị ở mảng 2

·         Nếu 2 mảng có chỉ mục (key) bị trùng nhau và là dạng số thì giá trị tương ứng của key đó ở mảng 2 sẽ được cung cấp 1 key mới mà không bị ghi đè

 

 

5 – Hàm array_combine()

Hàm array_combine() nhận vào 2 mảng và trả về một mảng có chỉ mục (key) là giá trị của mảng 1 còn giá trị (value) là giá trị của mảng 2

·         Nếu 2 mảng không có cùng số phần tử thì lập tức báo lỗi



6 – Hàm array_intersect()

Hàm array_intersect() nhận vào 2 mảng và trả về một mảng có chứa các phần tử có cùng giá trị ở 2 mảng

·         Nếu các phần tử có cùng giá trị (value) nhưng khác chỉ mục (key) thì phần tử đó sẽ nhận chỉ mục (key) của phần tử thuộc mảng 1

 

 

7 – Hàm in_array()

Hàm in_array() sẽ tìm sự tồn tại của một phần tử trong mảng, và trả về kết quả là TRUE hoặc FALSE


B – BÀI TẬP

I – BÀI TẬP THỰC HÀNH

Bài 1:

Cho một mảng gồm 5 phần tử như sau: array(6, 5, 1, 9, 8)

·         Hãy in ra giá trị của các phần tử trong mảng trên theo thứ tự tăng dần với mỗi phần tử nằm trên một dòng

·         Hãy in ra giá trị của các phần tử trong mảng trên theo thứ tự giảm dần với mỗi phần tử nằm trên một dòng

II – BÀI TẬP VỀ NHÀ

Bài 2:

Viết chương trình cho người dùng tạo tự động một mảng các số nguyên có số phần tử tùy thích và không hạn chế với yêu cầu như sau:

·         Tạo Form chứa 2 hộp textbox để người dùng có thể nhập các phần tử đầu tiên và phần tử cuối cùng trong một mảng muốn khởi tạo

·         Nếu phần tử đầu tiên nhập vào lớn hơn phần tử cuối cùng của mảng muốn khởi tạo thì khởi tạo mảng các số nguyên giảm dần liên tiếp. Ví dụ: nhập vào 10 và 6 thì mảng tạo khởi tạo là array(10, 9, 8, 7, 6)

·         Nếu phần tử đầu tiên nhập vào bé hơn phần tử cuối cùng của mảng muốn khởi tạo thì khởi tạo mảng các số nguyên tăng dần liên tiếp. Ví dụ: nhập vào 0 và 9 thì mảng tạo khởi tạo là array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Bài 3:

Viết chương trình cho người dùng tạo tự động các mảng chẵn và mảng lẻ với những yêu cầu sau đây:

·         Tạo Form chứa hộp textbox để người dùng nhập một số nguyên dương bất kỳ

·         Khi người dùng nhập một số nguyên dương bất kỳ và bấm nút khởi tạo (submit) thì sẽ khởi tạo 2 mảng (1 mảng các số nguyên dương chẵn và 1 mảng các số nguyên dương lẻ). Ví dụ: Nhập vào 10 thì sẽ tạo ra được 2 mảng array(2, 4, 6, 8, 10) và array(1, 3, 5, 7, 9)

Bài 4:

Viết chương trình tìm một số nguyên bất kỳ trong khoảng từ 1 đến 10 được nhập từ bàn phím từ một mảng các số nguyên (5 phần tử và mỗi phần tử có giá trị trong khoảng 1 đến 10) với các phần tử mảng được tạo ngẫu nhiên bởi hàm rand(). Ví dụ rand(1,10) (sẽ tạo một số ngẫu nhiên trong khoảng từ 1 đến 10). Chương trình có những yêu cầu sau:

·         Tạo một Form chứa textbox để người dùng nhập một số nguyên dương bất kỳ trong khoảng từ 1 đến 10. Một nút submit để thực hiện việc tính toán ra kết quả.

·         Kiểm tra số nguyên dương vừa được nhập vào. Nếu tồn tại số đó trong một mảng 5 phần tử với mỗi phần tử là một số nguyên dương có giá trị trong khoảng từ 1 đến 10 được tạo ngẫu nhiên thì thong báo “Bạn vừa nhập vào một số đã tồn tại trong mảng”. Còn nếu không thì thi thông báo “Bạn vừa nhập vào một số không tồn tại trong mảng”

 

Đáp án

Bài 1:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>6.1</title>

</head>

<body>

<?php

$arr = array(6, 5, 1, 9, 8);

sort($arr);

echo "Sắp xếp theo thứ tự tăng dần <br />";

foreach($arr as $value){

echo $value."<br />";

}

rsort($arr);

echo "Sắp xếp theo thứ tự giảm dần <br />";

foreach($arr as $value){

echo $value."<br />";

}

?>

</body>

</html>


Bài 2:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>6.2</title>

</head>

<body>

<form method="post">

Số thứ nhất: <input type="text" name="st1" />

    Số thứ hai: <input type="text" name="st2" />

    <input type="submit" name="submit_name" value="Submit" />

</form>

<br />

<?php

if($_POST["submit_name"]){

if($_POST["st1"] == ""){

echo "Bạn chư nhập Số Thứ Nhất!<br />";

}

elseif(is_numeric($_POST["st1"]) == FALSE){

echo "Bạn cần nhập dữ liệu là một Số Nguyên!<br />";

}

else{

$st1 = $_POST["st1"];

}

if($_POST["st2"] == ""){

echo "Bạn chư nhập Số Thứ Hai!<br />";

}

elseif(is_numeric($_POST["st2"]) == FALSE){

echo "Bạn cần nhập dữ liệu là một Số Nguyên!<br />";

}

else{

$st2 = $_POST["st2"];

}

if($st1 && $st2){

$result = $st1 - $st2;

if($result > 0){

for($i=0; $i<=$result; $i++){

$arr[$i] = $st1;

$st1--;

}

echo "Mảng giảm<br />";

print_r($arr);

}

if($result < 0){

$result = $st2 - $st1;

for($i=0; $i<=$result; $i++){

$arr[$i] = $st1;

$st1++;

}

echo "Mảng tăng<br />";

print_r($arr);

}

}

}

?>

</body>

</html>


Bài 3:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>6.3</title>

</head>

<body>

<form method="post">

Nhập số nguyên dương bất kỳ: <input type="text" name="num" />

    <input type="submit" name="submit_name" value="Submit" />

</form>

<br />

<?php

if($_POST["submit_name"]){

if($_POST["num"] == ""){

echo "Bạn chưa nhập Số!<br />";

}

elseif(is_numeric($_POST["num"]) == FALSE){

echo "Bạn cần nhập dữ liệu là một Số Nguyên Dương!<br />";

}

else{

$num = $_POST["num"];

}

if($num){

$mang_chan = array();

$mang_le = array();

for($i=0; $i<=$num; $i++){

$check = $i%2;

if($check == 0){

$mang_chan[$i] = $i;

}

else{

$mang_le[$i] = $i;

}

}

echo "Mảng chẵn<br />";

print_r($mang_chan);

echo "<br />";

echo "Mảng lẻ<br />";

print_r($mang_le);

}

}

?>

</body>

</html>


Bài 4:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>6.4</title>
</head>
<body>
<form method="post">
Nhập số nguyên dương bất kỳ: <input type="text" name="num" />
    <input type="submit" name="submit_name" value="Submit" />
</form>
<br />
<?php
if($_POST["submit_name"]){
if($_POST["num"] == ""){
echo "Bạn chưa nhập Số!<br />";
}
elseif(is_numeric($_POST["num"]) == FALSE){
echo "Bạn cần nhập dữ liệu là một Số Nguyên Dương!<br />";
}
else{
$num = $_POST["num"];
}
//Tạo mảng với các phần tử ngẫu nhiên
$arr = array();
for($i=0; $i<5; $i++){
$arr[$i] = rand(1, 10);
}
//Kiểm tra sự tồn tại vừa $num trong mảng vừa tạo
if(in_array($num, $arr)){
echo "$num tồn tại trong mảng ngẫu nhiên!";
}
else{
echo "$num không tồn tại trong mảng ngẫu nhiên!";
}
}
?>
</body>
</html>

 >>Xem bài trước: Bài 26 - PHP basic buổi 5 - CÁC PHƯƠNG THỨC TRUYỀN DỮ LIỆU TRONG PHP

 

>>Xem bài tiếp theo: Bài 28 - PHP basic buổi 7 - BÀI 7 - KHÁI NIỆM VỀ HÀM TRONG PHP

No comments:

Post a Comment