Please enable JavaScript.
Coggle requires JavaScript to display documents.
Bài 5: MẢNG (Các hàm xử lý mảng (Ghép mảng array_merge() (Ghép hai hay…
Bài 5: MẢNG
Các hàm xử lý mảng
Tìm kiếm trên mảng:
array_search()
Tìm kiếm 1 giá trị trên mảng
Nếu tìm thấy sẽ trả về khóa của phần tử chứa giá trị đó, nếu không tìm thấy sẽ trả về giá trị NULL.
Cú pháp
$khóa = array_search(giá_trị_cần_tìm, $tên_mảng);
<?php
$mang = array(0=>'xanh', 1=>'đỏ', 2=>'vàng');
$khoa_do = array_search('đỏ', $mang()); ->1
$khoa_vang = array_search('vàng', $mang); ->3
?>
Ghép mảng
array_merge()
Ghép hai hay nhiều mảng với nhau
Kết quả trả về là một mảng mới được tạo ra từ các mảng
Cú pháp:
$mảng_ghép=array_merge($mảng_1, $mảng_2,…);
Chú ý: khi các mảng dùng để ghép có khóa trùng nhau thì mảng ghép sẽ chỉ lấy phần tử có khóa trùng của mảng cuối cùng.
<?php
$mang1 = array("màu")=> "đỏ",2, 4);
$mang2= array("a","b", "màu"=>"xanh", "hình"=>"tròn", 4);
$mang_chung = array_merge($mang1, $mang2);
print_r($mang_chung);
?>
Đếm số lần xuất hiện
array_count_values()
Đếm số lần xuất hiện của các phần tử trong mảng.
Kết quả trả về là một mảng trong đó khóa chính là giá trị trên mảng cần đếm và giá trị sẽ là số lần xuất hiện của nó trong mảng.
Cú pháp:
$mảng_slxh=array_count_values($tên_mảng)
Tạo mảng duy nhất
array_unique()
Hàm này sẽ bỏ đi những giá trị lặp lại trong mảng.
Kết quả trả về là một mảng mới mà trong đó mỗi phần tử trong mảng chỉ xuất hiện một lần.
Cú pháp:
$mảng_duy_nhất = array_unique($tên_mảng);
<?php
$mang_array(1,3,1,2);
$mang_duy_nhat = array_unique($mang);
->1, 3
?>
Tìm các giá trị khác nhau của
một mảng so với mảng khác
array_diff()
So sánh giữa hai mảng và lọc ra những phần tử chỉ có trong mảng thứ nhất mà không có trong mảng thứ hai.
Kết quả trả về là một mảng mới với những phần tử chỉ xuất hiện duy nhất trong mảng một.
Cú pháp:
array_diff($tên_mảng_1, $tên_mảng_2);
<?php
$mang_1 = array("a"=> "xanh", "đỏ","tím","vàng");
$mang_2 = array("b"=> "xanh", "đỏ","vàng");
$mang_con_1 = array_diff($mang_1, $mang_2);
print_r($mang_con_1);
->array([1]=>tím)
?>
Khái niệm về mảng
Mảng
Là một loại biến đặc biệt
Bao gồm một dãy các ô nhớ có nhiều ô nhớ con
cho phép biểu diễn thông tin dạng danh sách
trong thực tế.
Các phần tử trong mảng có thể có kiểu dữ liệu
khác nhau
Ví dụ:
8 số nguyên => Mảng có 8 phần tử
Danh sách học sinh => mảng thông tin các học
sinh
Khai báo và sử dụng mảng
Mảng một chiều
Khai báo và khởi tạo
Dùng array() để khai báo và khởi tạo
Khai báo 1 mảng rỗng
Cú pháp: $tên_mảng = array();
<?php
$mang = array();
?>
Cú pháp:
$tên_mảng = array([khóa=>] giá trị, …,);
Các phần tử trong mảng cách nhau bởi dấu ,
Trong đó:
Khóa: số nguyên dương /chuỗi
Nếu khóa là chuỗi: dùng cặp nháy đôi “giá trị của
khóa” hoặc cặp nháy đơn „giá trị của khóa‟
Mặc định, khóa tự động phát sinh, với phần tử đầu
tiên của mảng khóa có giá trị là 0, phần thứ hai của
mảng khóa có giá trị là 1, …
Chú ý:
Không tạo hai khóa có giá trị trùng nhau
Có thể dùng tất cả các kiểu dữ liệu cho giá trị
của khóa
<?php
$mang_1 = array(1,2,3,4,5);
$mang_2 = array(1=>"một", 2=>"hai", 3=>"Ba", 4=>"bốn", 5=>"năm");
$mang_3 = array("mot"=>1, "hai"=>2, "ba"=>3, "bon"=>4, "nam"=>5);
?>
Truy xuất phần tử trong mảng
Cú pháp: $tên_mảng[<khóa>]
<?php
$máng = array(1,5,)
?>
Thao tác trên mảng một chiều
Đếm số phần tử trong mảng: count()
Kết quả trả về của hàm là số phần tử có trong
mảng
Cú pháp:
$số_phần_tử = count($tên_mảng);
<?php
$mang_1 = array(1,2,3,4,5,6);
$so_phan_tu = count($mang_1); ->6
?>
Duyệt mảng
Duyệt mảng có khóa tự động
Dùng vòng lặp for để duyệt mảng
<?php
$mang_1 = array(1,2,3,4,5,6);
$n = count($mang_1);
for($i=0; $i<$n; $i++)
echo "\t".$mang_1[$i];
->1 2 3 4 5 6
?>
Duyệt mảng có khóa do người dùng tạo
Dùng vòng lặp foreach để duyệt mảng – Duyệt
để lấy giá trị của các phần tử trong mảng
<?php
foreach($ten_mang as $gia_tri){
xử lý các giá trị trong mảng(đọc, tính toán, thay đổi,...) với mỗi phần tử: $giá_trị
}
?>
<?php
$mang_2 = array(1=>"một", 2=>"hai");
foreach($mang_2 as $gia_tri){
echo "\t $gia_tri";
->một hai
}
?>
Dùng vòng lặp foreach để duyệt mảng – Duyệt
để lấy cả giá trị của khóa và giá trị của phần tử
<?php
foreach($ten_mang as $khóa=>$giá_trị){
xử lý
với mỗi phần tử: $khóa=>$giá_trị
}
?>
Tạo mảng từ chuỗi
dùng hàm explode
<?php
$chuoi = '1,2,3,12,8';
//tạo mảng
$mang = explode(',',$chuoi);
?>
Xuất mảng
Xuất mảng: dùng vòng lặp hoặc dùng hàm
implode
<?php
$mang = array(1,6,3,12,8,2);
//tạo chuỗi kết quả
$kq = implode(',',$mang);
echo $kq;
?>
Tính Tổng/ Tích
<?php
$mang = array(1,6,3,12,8,2);
$tong = 0; $tich = 1;
for($i=0; $i<count($mang); $i++){ $tong +=$mang[$i]; $tich *= $mang[$i]; } ?>
Tìm kiếm
<?php
$mang = array(1,2,3,4,5);
$vi_tri = -1; //dùng để lưu vị trí tìm thấy x
$x = 12; // giá trị cần tìm
for($i=0; $i<count($mang);$i++){ if($mang[$i]==$x){ $vi_tri=$i; break; } } if($vi_tri!=-1) echo "tìm thấy x tại vị trí $vi_tri"; ?>
Mảng hai chiều
Khai báo và khởi tạo
Mảng 2 chiều là mảng mà mỗi phần tử là mảng 1 chiều
Khai báo mảng chưa biết
số phần tử và giá trị
Cú pháp:
$tên_mảng = array();
<?php
$mang_2_chieu = array();
?>
Mảng biến trước giá
trị của các phần tử
$tên_mảng = array(array([$khóa]=>$giá_trị,…), array(…), …);
<?php
$mang_1 = array (array(1,2), array(3,4), array(5,6));
$mang_2 = array (array(1=>"một"), 2=>"hai"));
?>
Khởi tạo giá trị cho
từng phần tử của mảng:
Mảng có khóa tự động (người dùng
không thiết lập giá trị cho khóa)
Cú pháp:
$tên_mảng[vị_trí_dòng][vị_trí_cột] = <giá_trị>;
<?php
$mang_1[2][3] = 7
?>
Cú pháp:
$tên_mảng[vị_trí_dòng][giá_trị_khóa] = <giá_trị>;
<?php
?>
Truy xuất phần tử trong mảng
Cú pháp:
$giá_trị = $tên_mảng[vị_trí_dòng][vị_trí_cột];
<?php
$gia_tri_1 = $mang_1[0][0]; ->1
$gia_tri_2 = $mang_2[0][1] ->"một"
?>
Thao tác trên mảng hai chiều
-Đếm số dòng của mảng
Cú pháp: $số_dòng = count($tên_mảng);
Duyệt từng phần tử
trên mỗi dòng
<?php
$so_dong = count($mang_1);
for($i=0; $i<$so_dong; $i++){
echo "<br> Dòng $i: ";
foreach($mang_1[$i] as $gia_tri)
echo $gia_tri;
}
?>
Sắp xếp mảng
Sắp xếp mảng một chiều
Sắp xếp mảng có khóa tự động (người dùng không thiết lập giá trị cho khóa): dùng hai vòng lặp for lồng nhau để sắp xếp
Sắp xếp tăng dần: đưa các phần tử nhỏ nhất về đầu
Sắp xếp mảng
có khóa tự động
Để thực hiện việc sắp xếp mảng trên cần xây dựng hai hàm hoán vị hai giá trị và sắp xếp mảng
Hàm hoán vị
Hàm sắp xếp
Sắp tăng dần: sort($tên_mảng)
<?php
$mang = array(8,4,1);
$sort($mang);
echo implode(',', $mang);
//->1 4 8
?>
Sắp giảm dần: rsort($tên_mảng)
Sắp xếp mảng hai chiều
Hàm so sánh compare()
Sắp xếp hai phần tử có khóa là cột muốn sắp xếp.
Nếu sắp xếp dựa theo cột đầu tiên – khóa có giá trị là 0.
<?php
function compare($a, $b){
if($a[0]==$b[0])
return 0;
if($a[0]<$b[0])
return -1;
else
return 1;
}
?>
Hàm sắp xếp tăng dần theo giá trị của cột usort($tên_mảng, “compare”)
Hàm usort(mang, “compare”)
Ví dụ: sắp xếp mảng hai chiều tăng dần theo cột đầu tiên (cột 0) => truyền vào cho tham số thứ hai của hàm usort() giá trị là hàm compare