PHP TUTORIALS
Hướng dẫn tạo domain ảo tại localhost với XAMPP trên Window Có gì mới trong PHP 8 (Tính năng, Cải tiến và Trình biên dịch JIT) Hướng dẫn viết ứng dụng kiểm tra năm sinh theo âm lịch bằng PHP Xử lý realtime trong PHP sử dụng pusher Hướng dẫn gửi mail trong PHP với PHPMailer Bóc tách dữ liệu từ trang khác bằng PHP Simple HTML DOM Parser Cách sửa lỗi hình ảnh khi đăng bài viết lên Facebook Hướng dẫn tạo thông báo realtime với pushcrew Kích thước chuẩn và cách làm FavIcon icon Tìm hiểu bản chất vòng lặp foreach trong php Những vấn đề nâng cao kỹ năng lập trình trong php Sử Dụng Vòng Lặp Xuất Dữ Liệu Bảng Tính Lương Tìm hiểu thuật toán phân trang trong php Giới hạn số trang trong thuật toán phân trang Bài 01: Đệ quy menu đa cấp với php và mysql - phần 1 Bài 02: Đệ quy menu đa cấp với php và mysql - phần 2 Tích hợp bộ search google vào website Nên dùng count() hay sizeof() để đếm số phần tử của mảng Bài 01: Lấy dữ liệu từ mysql lưu vào file excel với PHPExcel Tạo slug tự động bằng JavaScript và PHP RSS là gì? Cách Tạo RSS cho Website PHP CMS là gì? Các CMS phổ biến hiện nay (update 2021) Web động là gì? Web tĩnh là gì? Chặn referrer từ website simple-share-buttons.com Bảng mã ASCII chuẩn các hệ nhị phân - thập phân - thập lục phân Hướng dẫn tạo Facebook App để lấy App ID và Secret Key Mối liên hệ giữa HTML - PHP - MYSQL Tự động post bài viết lên tường với hootsuite.com Kiểm tra người dùng đã đăng nhập hay chưa bằng PHP Lấy video kênh Youtube mới nhất bằng jQuery và Youtube API V3 Đệ quy chuyên mục đa cấp trong PHP toàn tập Font Awesome là gì? Cách sử dụng Font Awesome Tích hợp đăng nhập Google vào Website Thuật toán phân trang với PHP và MySQL Cài đặt LAMP trên Fedora
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Sử Dụng Vòng Lặp Xuất Dữ Liệu Bảng Tính Lương

Sài gòn đang mưa khá là nặng hạt, thời tiết bớt oi bức cũng khiến tinh thần thoải mái hơn và tôi lại đang có hứng thú chia sẻ các bạn một tutorial php nhỏ về array, nếu bạn chưa biết array là gì thì mời xem lại bài Các kiểu dữ liệu trong php, do bài này chỉ xoay quanh việc sử dụng mảng một chiều & mảng đa chiều & vòng lặp, nên tôi nghĩ không quá khó để tiếp thu nếu bạn có kiến thức cơ bản về nó.

Mô tả chức năng tính lương nhân viên bằng vòng lặp:

Tôi có 4 nhân viên tất cả, bao gồm các thông tin như, điện thoại, địa chỉ, họ tên,lương cố định., lương theo ngày..vvv , và yêu cầu của tôi khá là đơn giản như sau, liệt kê thông tin toàn bộ 4 nhân viên này, bao gồm cả mức lương từng ngày, lương 3 ngày, lương 1 năm. Yêu cầu đưa ra là phải sử dụng array viết toàn bộ chức năng này.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Thông tin nhân viên:

1/ Hoài Minh
Địa chỉ: 123 Google
Điện thoại: 0123456789
Ngày 1: 100000
Ngày 2: 200000
Ngày 3: 300000
Lương cố định: 800000
2/ Văn Cường
Địa chỉ: 456 Google
Điện thoại: 012946789
Ngày 1: 50000
Ngày 2: 100000
Ngày 3: 150000
Lương cố định: 500000
3/ Huy Phong
Địa chỉ: 789 Google
Điện thoại: 0909123456
Ngày 1: 60000
Ngày 2: 110000
Ngày 3: 160000
Lương cố định: 400000
4/ Công Thạch
Địa chỉ: 911 Google
Điện thoại: 012946789
Ngày 1: 70000
Ngày 2: 120000
Ngày 3: 170000
Lương cố định: 300000

Ok, đây là toàn bộ thông tin của từng nhân viên, tiếp theo chúng ta sẽ đi tới phần xây dựng cấu trúc array.

Cấu trúc array liệt kê thông tin nhân viên:

Để không mất time của các bạn, tôi đã chuẩn bị sẵn một cấu trúc code như sau.

<?php
	$employee=Array(
			"001" => array(
					"name"  => "Hoài Minh",
					"address"=> "123 Google",
					"phone"  => "0123456789",
					"salary"   => array(
							"day1" => "100000",
							"day2" => "200000",
							"day3" => "300000",
							"final" => "800000",
							),
					),
			"002" => array(
					"name"  => "Văn Cường",
					"address"=> "456 Google",
					"phone"  => "0129456789",
					"salary"   => array(
							"day1" => "50000",
							"day2" => "100000",
							"day3" => "150000",
							"final" => "500000",
							),
					),
			"003" => array(
					"name"  => "Huy Phong",
					"address"=> "789 Google",
					"phone"  => "0909123456",
					"salary"   => array(
							"day1" => "60000",
							"day2" => "110000",
							"day3" => "160000",
							"final" => "400000",
							),
					),
			"004" => array(
					"name"  => "Công Thạch",
					"address"=> "911 Google",
					"phone"  => "0168946464",
					"salary"   => array(
							"day1" => "70000",
							"day2" => "120000",
							"day3" => "170000",
							"final" => "300000",
							),
					),															
	);
	echo "<pre>";
	print_r($employee);
	echo "</pre>";
	

?>

Xin thưa, nếu các bạn chưa rành về mảng, nhìn nó sẽ thấy rất là rối đúng không, tôi sẽ giải thích code, 001 là array chính, bên trong nó chứa các tham số con như là name, email, address, phone, và các tham số con này được gọi là key, bên trong nó chứa các thông tin của từng nhân viên gọi là value, ở ngay key salary, nó lại có thêm một cái array chứa thông tin lương từng ngày, lương 1 năm, như vậy với cấu trúc trên chúng ta dễ dàng nhận ra đây là mảng đa chiều, nhiều array lồng vào với nhau.

Bây giờ tôi sẽ in kết quả ra trình duyệt để xem kết quả có đúng như sự kỳ vọng của tôi hay không, sử dụng cặp thẻ pre, kết hợp với hàm print_r, ta có cú pháp như sau.

echo "<pre>";
print_r($employee);
echo "</pre>";

Kết Quả:

Array
(
    [001] => Array
        (
            [name] => Hoài Minh
            [address] => 123 Google
            [phone] => 0123456789
            [salary] => Array
                (
                    [day1] => 100000
                    [day2] => 200000
                    [day3] => 300000
                    [final] => 800000
                )

        )

    [002] => Array
        (
            [name] => Văn Cường
            [address] => 456 Google
            [phone] => 0129456789
            [salary] => Array
                (
                    [day1] => 50000
                    [day2] => 100000
                    [day3] => 150000
                    [final] => 500000
                )

        )

    [003] => Array
        (
            [name] => Huy Phong
            [address] => 789 Google
            [phone] => 0909123456
            [salary] => Array
                (
                    [day1] => 60000
                    [day2] => 110000
                    [day3] => 160000
                    [final] => 400000
                )

        )

    [004] => Array
        (
            [name] => Công Thạch
            [address] => 911 Google
            [phone] => 0168946464
            [salary] => Array
                (
                    [day1] => 70000
                    [day2] => 120000
                    [day3] => 170000
                    [final] => 300000
                )

        )

)

Ok, xem như bước đầu đã thành công, việc tiếp theo cần làm sẽ hiển thị thông tin vào table cho nó đẹp mắt.

Thực hành show thông tin nhân viên bằng vòng lặp foreach:

Để có thế lấy được giá trị bên trong array, tôi cần phải sử dụng vòng lặp foreach, ánh xạ $employee với một tham số khác, thì mới có thể lấy đươc giá trị nằm bên trong array được.

Vậy tôi có cú pháp như sau.

foreach($employee as $k => $v){
// Giá trị cần lặp.
}

Trong đó $employee là mảng cần lặp,$k là số chỉ mục (mảng có chỉ mục) hoặc là key (trong mảng kết hợp), $v là giá trị của phần tử ở vị trí $k., và tất nhiên tôi sẽ lấy giá trị ra và đổ nó vào table, và tôi có đoạn code sau.

<table align="center" width="900" border="1">
		<tr>
             <td  class="title">ID</td>
            <td  class="title">Họ Tên</td>
            <td  class="title">Địa Chỉ</td>
            <td  class="title">Điện Thoại</td>
            <td  class="title">Ngày 1</td>
            <td  class="title">Ngày 2</td>
            <td  class="title">Ngày 3</td>
            <td  class="title">Lương 3 Ngày</td>
            <td  class="title">Lương 1 Năm</td>
        </tr>
        <!--- Nơi lặp dữ liệu ---!>
</table>


Tôi có tổng cộng là 9 cột tất cả, đầu tiên tôi cần phải lấy được cái ID, và $k ứng với ID tức là mã số nhân viên đấy các bạn, sau khi lấy được ID rồi, những thông tin còn lại muốn lấy cũng khá là dễ dàng, các bạn có thể thấy rằng $v chính là array, vậy để lấy được cái name, email..vv chúng ta lấy giá trị bằng cú pháp $v['name'],$v['email'].

foreach($employee as $k => $v){
	echo "<tr>";
	echo "<td>$k</td>";
        echo "<td>$v[name]</td>";
	echo "<td>$v[address]</td>";
	echo "<td>$v[phone]</td>";
        echo "</tr>";
}

Để lấy được số lương theo từng ngày, thì ngay tại $v chúng ta có cái key là salary ứng với nó lại có thêm một cái array nửa và bên trong nó còn có các khóa con như là, day 1, day 2, day 3, final, muốn tính được số lương thì cần phải truy cập vào được giá trị này. Muốn truy cập được cần phải có cái key là salarytức là $v['salary'], khi ấy tôi sẽ dùng mảng đa chiều, vì phần giá trị này nó là array, nên chúng ta sẽ có 2 tham số là key & value, muốn lấy lương ngày 1, chỉ cần truyền key vào là xong, $v['salary']['day1'], với cú pháp này giúp chúng ta lấy được số lương ngày 1 của từng nhân viên.

echo "<td>".$v['salary']['day1']."</td>";
echo "<td>".$v['salary']['day2']."</td>";				
echo "<td>".$v['salary']['day3']."</td>";

Như vậy, sau khi có được số lương từng ngày của từng nhân viên , thì việc tính tổng lương 3 ngày trở nên rất là đơn giản, tôi dùng cú pháp sau. $salary=$v['salary']['day1'] + $v['salary']['day2'] + $v['salary']['day3']; , lấy số lương 3 ngày cộng lại với nhau là ra thôi.

$salary=$v['salary']['day1'] + $v['salary']['day2']+ $v['salary']['day3'];
echo "<td>$salary</td>";

Tiếp theo, từng nhân viên được xét lương theo tháng, và để tính tổng tiền lương 1 năm thì như thế nào, câu trả lời khá lá đơn giản , một năm có 12 tháng, lấy lương theo tháng thì nhân với 12 là ra số lương một năm. Key là final, đặt một biến $total hứng các giá trị bên trong như sau. $total = ($v['salary']['final'] * 12);

$total = ($v['salary']['final'] * 12);
echo "<td>$total</td>";


Xem như tôi vừa hướng dẫn các bạn xây dựng xong chức năng tính lương nhân viên và liệt kê thông tin bằng array, nhìn sơ qua thì thấy cấu trúc mảng hơi rối , nhưng khi bắt tay vào xử lý code, thì rất là đơn giản, bài viết chỉ thuộc dạng basic thôi nhé, múa rìu qua mắt thợ thôi, bản thân tôi cũng chưa chuyên về xử lý array lắm.

Full code:

<!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>Demo Array Freetust.net</title>
<style>
td{
    font:12px verdana, arial, sans-serif;
    border:1px solid #00CCFF;
    padding:15px;
    text-align:center;
}
.title{
    color: #FFF;
    background: orange;
    font-weight: bold;
}
tr:hover{
    background:  #FFFCA8;
}
</style>
</head>

<body>

<?php
	$employee=Array(
			"001" => array(
					"name"  => "Hoài Minh",
					"address"=> "123 Google",
					"phone"  => "0123456789",
					"salary"   => array(
							"day1" => "100000",
							"day2" => "200000",
							"day3" => "300000",
							"final" => "800000",
							),
					),
			"002" => array(
					"name"  => "Văn Cường",
					"address"=> "456 Google",
					"phone"  => "0129456789",
					"salary"   => array(
							"day1" => "50000",
							"day2" => "100000",
							"day3" => "150000",
							"final" => "500000",
							),
					),
			"003" => array(
					"name"  => "Huy Phong",
					"address"=> "789 Google",
					"phone"  => "0909123456",
					"salary"   => array(
							"day1" => "60000",
							"day2" => "110000",
							"day3" => "160000",
							"final" => "400000",
							),
					),
			"004" => array(
					"name"  => "Công Thạch",
					"address"=> "911 Google",
					"phone"  => "0168946464",
					"salary"   => array(
							"day1" => "70000",
							"day2" => "120000",
							"day3" => "170000",
							"final" => "300000",
							),
					),															
	);
	echo "<pre>";
	print_r($employee);
	echo "</pre>";
	

?>
	<table align="center" width="900" border="1">
		<tr>
        	<td  class="title">ID</td>
            <td  class="title">Họ Tên</td>
            <td  class="title">Địa Chỉ</td>
            <td  class="title">Điện Thoại</td>
            <td  class="title">Ngày 1</td>
            <td  class="title">Ngày 2</td>
            <td  class="title">Ngày 3</td>
            <td  class="title">Lương 3 Ngày</td>
            <td  class="title">Lương 1 Năm</td>
        </tr>
        <?php
			foreach($employee as $k => $v){
				echo "<tr>";
				echo "<td>$k</td>";
				echo "<td>$v[name]</td>";
				echo "<td>$v[address]</td>";
				echo "<td>$v[phone]</td>";
				echo "<td>".$v['salary']['day1']."</td>";
				echo "<td>".$v['salary']['day2']."</td>";				
				echo "<td>".$v['salary']['day3']."</td>";	
				$salary=$v['salary']['day1'] + $v['salary']['day2']	+ $v['salary']['day3'];
				echo "<td>$salary</td>";
				$total = ($v['salary']['final'] * 12);
				echo "<td>$total</td>";
				echo "</tr>";	
			}
		?>
	</table>
</body>
</html>


Kết quả:


Kết thúc bài học:

Hy vọng qua bài viết này, sẽ giúp các bạn có cái nhìn khác hơn trong việc xử lý mảng bằng vòng lặp, từ đó gọt tẻ cho mình những kinh nghiệm khi thao tác với mảng, bây giờ các bạn nên ngồi gõ lại code nhé, có code lại thì não bộ mới nhớ lâu hơn. Chúc các bạn cuối tuần vui vẻ & học tốt.

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top