Các bản tin khác
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 ?.
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
PHP Framework những điều nên và không nên
Khái quát về PHP Framework
Học PHP như thế nào khi bạn chưa biết lập trình?
Tự học lập trình PHP dễ hay khó ?
Web 2.0 - Khái niệm và bản chất của chúng như thế nào ?



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ôngReply
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ở :DReply
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 ơnReply
gominam (21:40 08/06/2010)
bạn lên có lời giải cho từng bài!!!cảm ơnReply
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 khaoReply
pache (16:23 07/08/2010)
rât mong admin có lời giải sớm nhất...thanksReply
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ệuReply
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 thujReply
Le Trong Nghia (22:23 25/05/2011)
minh moi bat dau hoc php thoi mong cac dan anh chi giaoBQT 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ảoupload 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 nhaReply
LONG (15:40 05/11/2011)
THANKSReply
sonsiux (07:38 09/11/2011)
<?phpsession_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)
<?phpif(!$_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 hayReply