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ị
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>
<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>
<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>
No comments:
Post a Comment