Đào Tạo PHP & Mysql

Học PHP Online - PHP Framework - Tự Học PHP

Lập Trình PHP Căn Bản

Bài 6: Tổng quan về mảng và các hàm hỗ trợ trong PHP

Cũng như bao ngôn ngữ lập trình khác. PHP cũng tồn tại một loại dữ liệu được gọi là mảng. Cụ thể hơn Mảng là 1 biến danh sách. Nghĩa là, một biến vốn chứa nhiều phần tử được tạo bởi các số hoặc chuỗi. Nó cho phép chúng ta lưu trữ, sắp xếp thứ tự và truy cập nhiều giá trị với một tên. Và cần lưu ý rằng một phần tử mảng luôn bắt đầu với giá trị là 0.




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


Với cú pháp giống với java ta có cách gọi 1 mảng như sau:

$tên_biến= array("Kenny","Maria","Julia","Kenvin")

Như vậy khi gọi giá trị trong mảng ta có:

Echo $tên_biến[2]; // Giá trị sẽ cho là Julia.

Ngoài cách khai báo ở trên chúng ta cũng có thể khai báo bằng cách khác như sau:

$tên_biến[] = "Kenny";

$tên_biến[] = "Gillian";

$tên_biến[] = "Charlene";

$tên_biến[] = "Calvin"

Chúng ta không cần thêm ký tự vào. Vì PHP đã tự xử lý cho chúng ta phần đó.

Để thêm 1 phần tử vào mảng chúng ta cũng có thể sử dụng như sau:

$tên_biến[] = "Jiro";

Như vậy nếu chúng ta gọi giá trị: echo $tên_biến[4] thì giá trị sẽ là jiro. Vì nó được PHP thêm vào sau cùng và ngầm hiểu là giá trị tiếp theo.

Ví dụ:


<?php

$a=array("Kenny","Maria","Julia","Kenvin");

echo $a[2]; //Xuất ra giá trị Julia

?>


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


Là các mảng được tạo index bằng các chuỗi , chúng được gợi là các mảng kết hợp.

Ví dụ:


<?

$a= array (name => "Kenny", job => "Teacher", age=>"45", email => "webmaster@vietchuyen.com.vn")

?>

Như vậy để truy cập giá trị của mảng trên chúng ta không thể sử dụng cách cũ được.

Ví dụ: Để lấy giá trị của tuổi tôi không thể sử dụng cách trên : echo $a[2].

Vì chúng ta đã gán giá trị của index cho 1 tên gọi khác. Do vậy để lấy giá trị của tuổi ta sử dụng như sau: echo $a[age] // Kết quả sẽ cho ra 45.


<?

$tên_biến= array (name => "Kenny", job => "Teacher", age=>"45", email => "webmaster@vietchuyen.com.vn")

echo $a[age];

?>


3- Phép lặp trong mảng:


Cú pháp:

foreach($array as $temp)

{ Hành Động }

Trong đó $array là mảng mà ta muốn thực thi việc lặp dữ liệu, và $temp là một biến trong đó ta sẽ tạm thời lưu trữ mỗi phần tử.

Ví dụ:


<?php

$name= array("Kenny", "Jiro", "Calvin", "Gillian");

foreach ($name as $test)

{ echo "$test<br>"; }

?>


b) Lặp lại qua một mảng kết hợp:


Cú pháp:

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

{ Hành Động }

Trong đó $array là mảng mà ta muốn thực thi việc lặp dữ liệu, $key là một biến vốn tạm thời chứa mỗi khóa, và $value là một biến vốn tạm thời chữa mỗi giá trị.

Ví dụ:


<?php

$person= array(name=>"Kenny", job=>"Teacher", email=>"whiletionvn@gmail.com", age=>"38");

foreach($person as $key=>$test)

{

echo "Key: $key. Gia Tri: $test<br>";

}

?>


4- Các hàm hỗ trợ trong PHP:


+ Hàm gộp mảng:

Cú pháp: array_merge($mang1, $mang2);


+ Hàm tách mảng:

Cú pháp: array_slice($mang, vị trí tách, số lượng tách);


+ Hàm sắp xếp mảng:

Cú pháp: sort($mảng);


+ Hàm sắp xếp mảng theo chỉ mục:

Cú pháp: ksort($mảng);


+ Hàm tìm phần tử có tồn tại trong mảng hay không ?.

Cú pháp: in_array(giá trị tìm, $mảng);

5 - Tổng kết:

Qua bài học này, chúng ta tìm hiểu kỹ về các thành phần của mảng một chiều, nhiều chiều và các hàm cơ bản vể xử lý dữ liệu. Hiểu rõ cấu trúc mảng, sự sắp xếp đồng bộ sẽ giúp ích cho các bạn rất nhiều trong những ứng dụng lớn.


Bài tập áp dụng :


1- Xây dựng website có tính năng upload cho phép upload cùng lúc 10 file dữ liệu.
2- Xây dựng website có tính năng upload, và chỉ cho phép upload file có định dạng hình ảnh như gif, jpg. Ngoài ra các tính năng khác đều có thông báo lỗi không cho upload.


(Bùi Quốc Huy)
48206
Bạn vẫn chưa hiểu rõ vấn đề ?. Bạn vẫn còn nhiều điều thắc mắc ?. Bạn gặp lỗi khi thực hành mã lệnh trên ?. Hãy tham gia diễn đàn QHOnline.Info để nhận được sự giúp đỡ từ phía cộng đồng nhanh nhất. Đồng thời tải những tài liệu giá trị tại diễn đàn. Việc đăng ký là hoàn toàn miễn phí, hãy đăng ký ngay để chúng tôi giúp đỡ bạn nhé.

Ghi rõ nguồn từ website QHOnline.Info - Khi bạn phát hành lại thông tin từ website này

Phản hồi của bạn Tiếng Anh Telex VNI VIQR





trần văn hùng (10:45 08/04/2010)

ngoài mấy hàm đó còn có hàm nào nữa không

Reply

NuocHoa4U (23:46 04/05/2010)

Mảng của php quá linh động, trước đây chỉ lập trình C/C quen làm việc mảng theo pointer, offset. Để cài đặt mảng như php trong C/C phải làm một đống chuyện khổ sở :D

Reply

Dương Tử Lang (11:31 07/05/2010)

Những tài liệu này rất hay. Xin cám ơn bạn đã chia sẽ.

Reply

Nam (18:59 17/05/2010)

Xin ban quan tri có thể có đáp án cho bài tập từng phần. xin cảm ơn

Reply

gominam (21:40 08/06/2010)

bạn lên có lời giải cho từng bài!!!cảm ơn

Reply

newbie (12:57 11/06/2010)

Mong Admin có đáp án cho từng phần .
Thank you!

Reply

thanhvod (14:09 12/07/2010)

mong admin cập nhật lời giải. :)

Reply

Quach Phu Thanh (15:14 05/08/2010)

mong admin cap nhat bai giai de tham khao

Reply

pache (16:23 07/08/2010)

rât mong admin có lời giải sớm nhất...thanks

Reply

Nguyen Van Quan (13:46 31/08/2010)

Mình mới làm quen với ngôn ngữ PHP và mình rất thích học ngôn ngữ này. Rất mong ban quản trị có thật nhiều bài viết từ đơn giản cho tới chuyên sâu, nhằm giúp mọi người có thể share cho nhau để học tập.
Xin chân thành cám ơn nhiều!

Reply

Lê Quốc Tuấn (09:16 02/09/2010)

Những bài viết rất cơ bản.Thanks.

Reply

nguyen quoc dung (08:45 05/09/2010)

xin cac thay cho loi giai bai tap tren.Xây dựng website có tính năng upload cho phép upload cùng lúc 10 file dữ liệu

Reply

tamnv (23:15 21/09/2010)

Share cho các bác bài tập chương này nha. Mình cho là 3 vì để 10 nhìn to quá.
http://www.mediafire.com/?541jz3f85hkehfz

Reply

nguyenvantam (15:32 23/09/2010)

Giới thiệu với các bạn cách giải bài tập chương này.
-form cho phép chọn đường dẫn tới file
<form id="form1" name="form1" method="post" action="process_upload.php" enctype="multipart/form-data/*muốn tìm file để up cần dùng cái này*/">
<?php
$numfile=3;
for($i=0;$i<$numfile;$i )
{
?>
<label>
<input type="file" name="txtfile[]/*chu y cho nay nhe*/" id="txtfile" />
<br />
</label>
<?php
}?>
<input type="submit" name="btnup" id="btnup" value="Upload" />
</form>
-form xử lý:
Trong đó:
$_FILES["txtfile"]["name"]: tên file
$_FILES["txtfile"]["size"]:kich thước file
$_FILES["txtfile"]["type"]:kiểu file
$_FILES["txtfile"]["error"]:lỗi xảy ra
Bắt đầu:
<?php
$dir="upload/";//duong dan noi chua file khi up
$numfile=3;
for($i=0;$i<$numfile;$i )
{
$filename="";
if(isset($_FILES["txtfile"]["error"][$i])

Reply

BichLoanHo (10:50 01/10/2010)

Rất mong admin cho em bài giải để em có thể tham khảo. E xin cảm ơn nhiều!

Reply

Lê Hải Phuơng (23:15 15/10/2010)

Ban quản trị nên có những bài giải cho từng bài tập, sẽ giúp người đọc hiểu hơn về bài viết trên!
Thân!

Reply

Mr.Sỏi (23:06 06/11/2010)

Cho mình hỏi, khi mình khai name="txtfile[]"
thì nó tự tạo ra mảng
$_FILES["txtfile"]["name"]: tên file
$_FILES["txtfile"]["size"]:kich thước file
$_FILES["txtfile"]["type"]:kiểu file
$_FILES["txtfile"]["error"]:lỗi xảy ra
hay sao.
chỗ này mình chưa hiểu lắm

Reply

Phan Nguyễn Hạnh Nhân (10:36 08/04/2011)

Sao không thấy ai làm nổi bài tập áp dụng nhỉ

Reply

shirokenshin (10:57 08/05/2011)

hic,sao chưa có mạnh thường quân nào hết z.đang có hứng tìm hiểu kỹ.z mà.wa level7 thuj.hjhj.bạn Nguyễn Văn Tâm chỉ mới là thạch sanh thuj

Reply

Le Trong Nghia (22:23 25/05/2011)

minh moi bat dau hoc php thoi mong cac dan anh chi giao
BQT co the cho dap an o bai hoc tiep theo khong de chung em giai roi co bai doi chieu xem minh lam dung hay sai de con rut kinh nghiem

Reply

Trung Kiên (22:00 07/06/2011)

Hàm gộp mảng:

Cú pháp: array_merge($mang1, $mang2);

Hàm tách mảng:

Cú pháp: array_slice($mang, vị trí tách, số lượng tách);

Hàm sắp xếp mảng:

Cú pháp: sort($mảng);

Hàm sắp xếp mảng theo chỉ mục:

Cú pháp: ksort($mảng);

Hàm tìm phần tử có tồn tại trong mảng hay không ?.
Cú pháp: in_array(giá trị tìm, $mảng);
chỉ rõ mấy cái này đi anh :: dùng ntn nào lấy hộ em 1 ví dụ : thank nhiều

Reply

storm (12:04 17/06/2011)

<?

$tên_biến= array (name => "Kenny", job => "Teacher", age=>"45", email => "webmaster@vietchuyen.com.vn")

echo $a[age];

?>

Phải để như sau mới đúng phải ko mọi người ?

<?
$a = array ('name' => "Kenny", 'job' => "Teacher", 'age'=>"45", 'email' => "webmaster@vietchuyen.com.vn");

echo $a['age'];
?>

Reply

Cao Văn (10:43 12/10/2011)

Đối với string-chuỗi thì bạn phải bao nó bằng cặp dấu nháy đơn hoặc nháy kép, đó là điều bắt buộc.
trong mảng trên bạn có thể sử dụng:
$a =array ("name" => "Kenny", "job" =>....);
//vẫn đúng.

Cũng có kiểu trình bày mảng khác như sau:
$a = array (
"name" => "Kenny",
"job" => "Teacher",
"age" => "45"
);

Mản này tương đương với mảng trên của bạn, nhưng dễ quan sát hơn

Đàm Nguyễn Đức Thọ (12:21 13/07/2011)

Mình xin xửa bài 2 :

<form action="upload.php" method=post enctype="multipart/form-data" >
<input type=file name=img size=25 />
<input type=submit name=ok value="Upload" />
</form>

<?php
if(isset($_POST['ok']))
{
$dinhdang=array("image/jpeg");

if($_FILES['img']['name'] != NULL)
{
if( in_array($_FILES['img']['type'], $dinhdang) )
{
move_uploaded_file($_FILES['img']['tmp_name'],"data/".$_FILES['img']['name']);
echo "<br />Ten file: ".$_FILES['img']['name'];
echo "<br />Ten file tam: ".$_FILES['img']['tmp_name'];
echo "<br />Kich thuoc file: ".$_FILES['img']['size'];
echo "<br />TDinh dang file: ".$_FILES['img']['type'];
echo "<br><img src='data/".$_FILES['img']['name']."' />";
}
else
{
echo "Ban upload sai dinh dang jpeg roi";
}
}
else
{
echo "Vui long chon hinh di ban";
}
}
?>

Reply

Hoang Hung (10:30 25/07/2011)

4- Các hàm hỗ trợ trong PHP:

Hàm gộp mảng:

Cú pháp: array_merge($mang1, $mang2);

Hàm tách mảng:

Cú pháp: array_slice($mang, vị trí tách, số lượng tách);

Hàm sắp xếp mảng:

Cú pháp: sort($mảng);

Hàm sắp xếp mảng theo chỉ mục:

Cú pháp: ksort($mảng);

Hàm tìm phần tử có tồn tại trong mảng hay không ?.
Cú pháp: in_array(giá trị tìm, $mảng);

Bạn cho ví dụ phần này đi. Cảm ơn bạn

Reply

Baby_snow (16:28 31/08/2011)

Sao mình làm giống như các bạn mà sao ko thể up hình lên đc nhỉ?
lúc nào cũng thông báo là invalid image
admin ơi. sau mỗi bài có thể gửi đáp án cho cả nhà đc hem?

Reply

Đào Mạnh Hòa (11:19 08/10/2011)

mình đã hoàn thành 2 bài tập mà hơi dài nên không post lên đây được, cám ơn 2 bạn ở phía trên đã cung cấp code về bài tập mình dựa vào đó để làm, nếu ai không hiểu có thể pm yh: www.vang_toi_xau m` shared bài ^^

Reply

hoa (20:10 11/10/2011)

mình chỉ biết làm thế này thôi share để mọi người tham khảo
upload 1file
<form action="upload1.php" name=name method=post enctype="multipart/form-data">
<input type=file name=img id=img>
<input type=submit name=submit value="upload">
</form>

//cai này để kiểm tra điều kiện là hình ảnh

<?php
if($_FILES["img"]["type"]=="image/gif"||$_FILES["img"]["type"]=="image/jpeg"||$_FILES["img"]["type"]=="image/pjpeg")
{
if($_FILES["img"]["error"]>0)
{
echo "loi :".$_FILE["img"]["error"];
}
else
{
echo " name :".$_FILES["img"]["name"].'<br>';
echo "type :".$_FILES["img"]["type"].'<br>';
echo "size:".$_FILES["img"]["size"].'<br>';
echo "local:".$_FILES["img"]["tmp_name"].'<br>';
}
if(file_exists("upload/".$_FILES["img"]["tmp_name"]))
{
echo "da co file </br>";
}
else
{
move_uploaded_file($_FILES["img"]["tmp_name"],"upload/".$_FILES["img"]["name"]);
echo "da chuyen sang file "."upload/".$_FILES["img"]["name"];
}
}
else
{
echo "khong phai image khong the upload ";
}
?>

Reply

Cao Văn (10:14 12/10/2011)

<!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>Array</title>
</head>
<body>
<?php
/*Một ví dụ về mảng trong mảng, nó tiện lợi khi bạn muốn xử lý thông tin có cấu trúc, được sắp xếp theo hệ thống phân cấp. */
$a = array (
array (
"Tên" => "Trần Cao Văn",
"Tuổi" => "20",
"SDT" => "0988.xxx.xxx"
),
array (
"Tên" => "N.T.M.P",
"Tuổi" => "20",
"SDT" => "0983.xxx.xxx"
)
);
?>
<ol>
<li><h3>Thông tin tài khoản Cao Văn</h3></li>
<ul>
<li> <?php echo "Họ và tên: " . $a[0]["Tên"]; ?></li>
<li> <?php echo "Tuổi: " . $a[0]["Tuổi"]; ?> </li>
<li> <?php echo "Số điện thoại: " .$a[0]["SDT"]; ?> </li>
</ul>
<li><h3>Thông tin tài khoản MP</h3></li>
<ul>
<li> <?php echo "Họ và tên: " . $a[1]["Tên"]; ?></li>
<li> <?php echo "Tuổi: " . $a[1]["Tuổi"]; ?> </li>
<li> <?php echo "Số điện thoại: " .$a[1]["SDT"]; ?> </li>
</ul>
</ol>

</body>
</html>

Reply

Cao Văn (10:32 12/10/2011)

<!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>Array</title>
</head>
<body>
<?php
/*Một ví dụ về mảng trong mảng, nó tiện lợi khi bạn muốn xử lý thông tin có cấu trúc, được sắp xếp theo hệ thống phân cấp. */
$a = array (
array (
"Tên" => "Trần Cao Văn",
"Tuổi" => "20",
"SDT" => "0988.xxx.xxx"
),
array (
"Tên" => "N.T.M.P",
"Tuổi" => "20",
"SDT" => "0983.xxx.xxx"
)
);
?>
<ol>
<li><h3>Thông tin tài khoản Cao Văn</h3></li>
<ul>
<li> <?php echo "Họ và tên: " . $a[0]["Tên"]; ?></li>
<li> <?php echo "Tuổi: " . $a[0]["Tuổi"]; ?> </li>
<li> <?php echo "Số điện thoại: " .$a[0]["SDT"]; ?> </li>
</ul>
<li><h3>Thông tin tài khoản MP</h3></li>
<ul>
<li> <?php echo "Họ và tên: " . $a[1]["Tên"]; ?></li>
<li> <?php echo "Tuổi: " . $a[1]["Tuổi"]; ?> </li>
<li> <?php echo "Số điện thoại: " .$a[1]["SDT"]; ?> </li>
</ul>
</ol>

</body>
</html>
Nếu như bạn thấy rắc rối về mảng này, hãy sử dụng hàm var_dump() để lấy thông tin của mảng, như vậy bạn sẽ có cái nhìn tổng quan hơn. Trong ví dụ trên, tôi sẽ lấy thông tin của toàn mảng:
<?php
$a = array (
array (
"Tên" => "Trần Cao Văn",
"Tuổi" => "20",
"SDT" => "0988.xxx.xxx"
),
array (
"Tên" => "N.T.M.P",
"Tuổi" => "20",
"SDT" => "0983.xxx.xxx"
)
);
//Bây giờ tôi sẽ lấy thông tin của nó

var_dump($a);

/*Trình duyệt sẽ xuất ra các dòng sau:
array
0 =>
array
'Tên' => string 'Trần Cao Văn' (length=15)
'Tuổi' => string '20' (length=2)
'SDT' => string '0988.xxx.xxx' (length=12)
1 =>
array
'Tên' => string 'N.T.M.P' (length=7)
'Tuổi' => string '20' (length=2)
'SDT' => string '0983.xxx.xxx' (length=12)
*/

//Bây giờ tôi sẽ lấy thông tin về index 0 ($a[0]) của mảng này

var_dump($a[0]);

/*Trình duyệt sẽ xuất ra:
array
'Tên' => string 'Trần Cao Văn' (length=15)
'Tuổi' => string '20' (length=2)
'SDT' => string '0988.xxx.xxx' (length=12)
*/

/*Hàm va_dump() chức năng chính của nó dùng để kiểm tra các biến, mảng chứa giá trị gì trong đó. Trong ví dụ trên nó cho bạn thấy được cái nhìn tổng quan về index/key và các giá trị của mảng. Hãy tận dụng nó để việc học php được tốt hơn ^^. */
?>

Reply

Ngô Ngọc Đài (21:59 03/11/2011)

em xin chào thầy và cać sư huynh sư tỷ.... em mới nhập môn học php nên chưa hiểu lắm....em rất thích học môn này....mong các huynh và tỷ giúp đệ....web này rất hay..ai có bài tập về php xin gởi qua gmail songhawoo2011@gmail.com cho em nha

Reply

LONG (15:40 05/11/2011)

THANKS

Reply

sonsiux (07:38 09/11/2011)

<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views'] = $_SESSION['views']+ 1;
else
$_SESSION['views'] = 1;

echo "views = ". $_SESSION['views'];
?>

Reply

Hồ Quang Thạnh (09:58 12/12/2011)

<?php
if(!$_POST[upload])
{
?>
<form action="<?=$_SERVER[PHP_SELF]?>" method="post">
<font color="blue">Vui long chon cac tap tin</font>
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br> <input type="file" name="file[]">
<br><input type="submit" name="upload" value="Upload">
</form>
<?php
}
else{
$a=array();
$a=$_POST[file];
$found=check_tag($a);
if($found){
echo "<font color=blue>"."Upload thanh cong"."<font>";
}
else{
echo "<font color=blue>"."Upload khong thanh cong. Chi cho phep upload file gif va jpg"."<font>";
}

}
?>
<?php
// Ham kiem tra duoi tap tin
function check_tag($s){
$check=true;
foreach($s as $element){
// tach file thanh 2 phan: ten file va phan mo rong
$str=explode(".",$element);
// Lay phan mo rong cua file
$tag=$str[1];
if($tag!="gif" && $tag!="jpg"){
$check=false;
}
}
return $check;
}
?>

Reply

hùng nguyễn (14:38 20/12/2011)

web nay qua hay

Reply

PHP MYSQL Online - Hoc PHP - Dao Tao PHP - Học PHP - CakePHP Framework - Lap Trinh PHP Can Ban - Lap Trinh PHP Nang Cao - PHP Framework - Tài liệu,Thư viện
Copyright 2007-2010 © QHOnline.Info | Powered By QHOnline Version 2.0 - XHTML Valid