Bài 14: Mảng array và các hàm xử lý mảng trong PHP

Bài 14: Mảng array và các hàm xử lý mảng trong PHP

Mảng(array) trong PHP luôn được sử dụng rất nhiều khi bạn làm lập trình. Nếu bạn hiểu về nó thì thấy cực kỳ đơn giản chứ không hề phức tạp.

Ở bài số 13, chúng ta đã làm quen với hàm(function) trong PHP, và cũng đã nhắc sơ qua về mảng vậy giờ hãy cùng sonnguyenaz.com tìm hiểu nhé.

Mảng array trong PHP là gì?

Mảng array trong PHP thực chất là một cấu trúc có thứ tự, trong đó bao gồm các khóa và giá trị.

Cấu trúc đơn giản của mảng array trong PHP

array(‘value1′,’value2’,’value3’…)

<?php
$mang=array('coc','oi','xoai','cam');	
echo '<pre>';
print_r($mang);
?>

kết quả là:

vi-du-ve-mang-array-don-gian-trong-php-1

Như chúng ta thấy thì cách khai báo mảng như trên, thì các value của mảng được gán vào các key mặc nhiên từ 0 trở lên đến hết các giá trị.

Hoặc chúng ta có thể khai báo mảng như sau:

<?php

	$mang=array(
	'loai1'=>'coc',
	'loai2'=>'oi',
	'loai3'=>'xoai',
	'loai4'=>'cam'
	);
	
echo '<pre>';
print_r($mang);
?>

Như vậy thì các key được chúng ta tự quy định vào, kết quả ra là:

Array
(
    [loai1] => coc
    [loai2] => oi
    [loai3] => xoai
    [loai4] => cam
)

Mảng array lồng nhau trong PHP(mảng đa chiều)

Hai mảng array lồng nhau trong PHP(mảng 2 chiều)

Hai mảng array trong PHP lồng nhau có nghĩa trong mảng lại có mảng, thì gọi là mảng 2 chiều.

Cũng là ví dụ ở trên nhưng để lưu thêm thông tin từng loại quả còn hàng hay hết hàng, số lượng là bao nhiêu quả:

<?php

	$mang=array(
	'coc'=>array('conhang',150),
	'oi'=>array('conhang',234),
	'xoai'=>array('hethang',0),
	'cam'=>array('conhang',10)
	);
	
echo '<pre>';
print_r($mang);
?>

Kết quả là:

vi-du-ve-mang-2-chieu-array-don-gian-trong-php

Vậy ở đây ta có một mảng chứa các key1 là loại hoa quả, các value1 lại là một mảng được lồng vào.

Trong mảng con thì tiếp tục có các key2value2.

Và cứ tiếp tục như vậy ta lồng tiếp một mảng con nữa vào value2 thì sẽ có được 1 mảng 3 chiều.

Xuất các phần tử của mảng array trong PHP

Để xuất các phần tử của mảng array trong PHP thì ta phải biết được key value của nó:

<?php

	$mang=array(
	'loai1'=>'coc',
	'loai2'=>'oi',
	'loai3'=>'xoai',
	'loai4'=>'cam'
	);
	
echo $mang['loai1'];
//kết quả: coc
?>

Ta biết key của giá trị ‘coc’‘loai1’ do đó có thể xuất ngay được giá trị của nó là $mang[‘loai1’]

Với mảng array 2 chiều:

<?php

	$mang=array(
	'coc'=>array('conhang',150),
	'oi'=>array('conhang',234),
	'xoai'=>array('hethang',0),
	'cam'=>array('conhang',10)
	);
	
echo $mang['coc'][0];
//kết quả: còn hàng
echo $mang['coc'][1];
//kết quả: 150
?>

do ở mảng con chúng ta không đặt key nên mặc định khóa sẽ là 0,1

Bây giờ chúng ta muốn truy xuất toàn bộ dữ liệu của mảng array ra thì như ở bài trước mình có đề cập trong Bài 10: Vòng lặp foreach trong PHP rồi nếu chưa xem thì bạn có thể xem lại nhé.

Ở đây mình ví dụ luôn:

<?php

	$mang=array(
	'coc'=>array('conhang',150),
	'oi'=>array('conhang',234),
	'xoai'=>array('hethang',0),
	'cam'=>array('conhang',10)
	);
foreach($mang as $key1 => $value1)	
{
	echo 'Loại quả: '.$key1;
	echo ' Tình trạng: '.$value1[0].' , Số lượng: '.$value1[1].'<br>';

}
?>

Kết quả là:

giai-mang-2-chieu-array-don-gian-trong-php

Các hàm xử lý mảng array trong PHP

Hàm in_array trong PHP

Hàm in_array trong PHP được dùng để kiểm tra giá trị có nằm trong mảng hay không:

<?php
$mang=array('coc','oi','xoai','cam');
var_dump(in_array('coc',$mang));//kết quả: true
var_dump(in_array('quyt',$mang));//kết quả: false
?>

Như ví dụ trên thì ‘coc’ có trong mảng array nên tra về true, còn ‘quyt’ không có trả về false.

Hàm array_search trong PHP

Hàm array_search trong PHP được dùng để tìm kiếm giá trị value trong mảng

Kết quả trả về là key của giá trị đó

Lưu ý: có nhiều value khác nhau thì hàm này chỉ trả về key đầu tiên mà nó tìm thấy được

<?php
$mang=array('coc','oi','xoai','cam');
echo array_search('xoai',$mang);

//kết quả: 2
?>

Hàm array_push trong PHP

Hàm array_push trong PHP dùng để add thêm các giá trị vào trong một mảng cho trước:

<?php
$mang=array('coc','oi','xoai','cam');
array_push($mang,'mit','dua');
echo '<pre>';
print_r($mang);
?>

Kết quả là:

Array
(
    [0] => coc
    [1] => oi
    [2] => xoai
    [3] => cam
    [4] => mit
    [5] => dua
)

Hàm array_pop trong PHP

Hàm array_pop trong PHP dùng để xóa đi phần tử cuối cùng của mảng, và ngay tai hàm đó nó sẽ trả về phần tử đã xóa đó:

<?php
$mang=array('coc','oi','xoai','cam');
$phantucuoi=array_pop($mang);
echo 'Phần tử đã xóa: '.$phantucuoi;
echo '<pre>';
print_r($mang);
?>

Kết quả là:

Phần tử đã xóa: cam
Array
(
    [0] => coc
    [1] => oi
    [2] => xoai
)

Hàm array_shift trong PHP

Ngược lại với hàm array_pop thì hàm array_shift trong PHP lại dùng để xóa phần tử đầu tiên ra khỏi mảng, và mang giá trị của phần tử đã xóa.

<?php
$mang=array('coc','oi','xoai','cam');
$phantucuoi=array_shift($mang);
echo 'Phần tử đã xóa: '.$phantucuoi;
echo '<pre>';
print_r($mang);
?>

Kết quả là:

Phần tử đã xóa: coc
Array
(
    [0] => oi
    [1] => xoai
    [2] => cam
)

Hàm array_unshift trong PHP

Hàm array_unshift trong PHP được dùng để thêm các phần tử vào vị trí đầu của mảng:

<?php
$mang=array('coc','oi','xoai','cam');
array_unshift ($mang,'quyt','dua');
echo '<pre>';
print_r($mang);
?>

Kết quả là:

Array
(
    [0] => quyt
    [1] => dua
    [2] => coc
    [3] => oi
    [4] => xoai
    [5] => cam
)

Hàm is_array trong PHP

Hàm is_array kiểm tra xem biến đó có phải mảng hay không, nếu có trả về true không trả về false

<?php
$mang=array('coc','oi','xoai','cam');
var_dump(is_array($mang));//kết quả: true
var_dump(is_array('sonnguyenaz.com'));//kết quả; false
?>

Lời kết

Như vậy ở bài này chúng ta đã cùng tìm hiểu về mảng array trong PHP, đã biết được cách tạo mảng cũng như cách sử dụng mảng.

Ngoài ra, bài viết này cũng đã giới thiệu cho các bạn về các hàm xử lý mảng trong PHP.

Chúc các bạn thành công, cảm ơn đã đọc bài viết.

Rate this post

sonnguyen

Là một nhân viên IT thích chia sẻ những gì mình biết đến tất cả mọi người. Hi vọng được mọi người ủng hộ, nếu có gì sai sót mong các bạn comment xuống dưới để mình khắc phục. Cảm ơn mọi người!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *