• Downloading from our site will require you to have a paid membership. Upgrade to a Premium Membership from 10$ a month today!

    Dont forget read our Rules! Also anyone caught Sharing this content will be banned. By using this site you are agreeing to our rules so read them. Saying I did not know is simply not an excuse! You have been warned.

Share Mảng ( Arrray) toàn tập

dgtupltn95

New Member
Là một danh sách các phần tử có cùng kiểu dữ liệu.Mảng có thể là mảng một chiều hay nhiều chiều. Mảng có 2 thành phần là chỉ mục (key) và giá trị. Chỉ mục có thể là số nguyên hoặc là chuỗi . Bạn có thể khởi tạo mảng bằng các cách như sau:

$arr[key] = value;
$arr[] = value;
$arr= array($key1 =>value1,$key2=>value2);
$arr = array(value1, value2);
[/PHP]
Như đã giới thiệu thì mảng có thể dùng số nguyên hoặc chuỗi để làm chỉ mục , ta tạm thời phân loại ra nhu sau:

1.Mảng một chiều có chỉ mục: là mảng được quản lý bằng cách sử dụng chỉ số dưới kiểu integer để biểu thị vị trí của giá trị yêu cầu.Cú pháp: $name[index1];
Ví dụ: một mảng một chiều có thể được tạo ra như sau:
PHP:
$meat[0]="chicken";
            $meat[1]="steak";
            $meat[2]="turkey";
Nếu bạn thực thi dòng lệnh sau: print $meat[1]; thì trên trình duyệt sẽ hiển thị dòng sau: steak.

Bạn cũng có thể sử dụng hàm array( ) của PHP để tạo ra một mảng.Ví dụ:

PHP:
$meat=array("chicken","steak","turkey");
Lưu ý : Khác với các ngôn ngữ lập trình khác ( nhu Pascal chẳng hạn) , phần tử đầu tiên của mảng có chỉ mục là 0 , không phải 1 . Nhưng khi khai báo mảng , chỉ mục khởi đầu không nhất thiết là 0 .
ví dụ bạn tạo mảng thế này
PHP:
$meat = array("chicken","steak","tukey");
Để lấy phần tử đầu tiên bạn sẽ gọi
PHP:
echo $meat[0];
Nhưng nếu khia báo thế này
PHP:
$arr[5] = 1;
thì chỉ mục tiếp theo là 6.

PHP:
$arr[] = 3; // key là 6 nhá.
Nhớ kỹ đều này nhá , lúc đầu tớ cũng bị PHP lừa về chuyện này đấy ( do trước đây chỉ học Pascal).

2.Mảng một chiều kết hợp: rất thuận lợi khi dùng để ánh xạ một mảng sử dụng các từ hơn là sử dụng các số ( integer), nó giúp ta giảm bớt thời gian và các mã yêu cầu để hiển thị một giá trị cụ thể.
Ví dụ: bạn muốn ghi lại tất cả các thức ăn và các cặp rượu ngon trong việc ăn nhậu của mình.

PHP:
$annhau["ruou"] = "Minh Mạng Tửu";
$annhau["khaivi"] = "Lạc rang";
$annhau["Trangmieng"] = "Chuối";
Một cách khác là bạn có thể sử dụng hàm array( ) của PHP để tạo ra một mảng loại này, ví dụ như sau:

PHP:
$annhau = array( "ruou" => "Minh Mạng Tửu", "khaivi" => "Lạc Rang", "trangmieng" => "Chuối");
Khi truy xuất phần tử mảng :
PHP:
echo $annhau["ruou"];
Sẽ xuất ra : Minh Mạng Tửu

3.Mảng nhiều chiều có chỉ mục: chức năng của nó cũng giống như mảng một chiều có chỉ mục, ngoại trừ việc nó có thêm một mảng chỉ mục được dùng để chỉ định một phần tử. Cú pháp: $name[index1] [index2]..[indexN];

Một mảng hai chiều có chỉ mục được tạo ra như sau:

PHP:
$position = $chess_board[5][4];
4.Mảng đa chiều kết hợp: khá hữu ích trong PHP. Giả sử bạn muốn ghi lại các cặp rượu-thức ăn, không chỉ loại rượu, mà cả nhà sản xuất. Bạn có thể thực hiện như sau:

PHP:
$pairings["Martinelli"] ["zinfandel"] = "Broiled Veal Chops";
$pairings["Beringer"] ["merlot"] = "Baked Ham";
$pairings["Jarvis"] ["sauvignon"] = "Prime Rib";
--------------
Hết phần khái niệm , tiếp theo là giới thiệu các hàm để truy xuất mảng
Để truy xuất hay nhập giá trị cho 1 phần tử mảng cụ thể , bạn có thể gọi trực tiếp chúng như sau:
PHP:
$arr = $mang[1];
hoặc
PHP:
$arr = $dothi["x"];
Cú pháp là tên mảng[chỉ mục]

Tips : Để xóa 1 phần tử ra khỏi mảng , ta dùng unset()
Ví dụ
PHP:
$arr = array(1,2,3,4);
unset($arr[2]);
// $arr bay giờ là array(1,2,4);
Để điếm các phần tử của mảng , dùng hàm count()
PHP:
$arr = array(1,2,3,4);
$so = count($arr); // đố bạn bằng bao nhiu ?
Để duyệt qua hết tất cả các phần tử của mảng (truy xuất hoặc nhập giá trị) ta dùng các cách sau:
Cách thứ nhất , dùng vòng lập for
Nếu biết trước số phần tử của mảng ta có thể dùng vòng lặp for để duyệt qua các phần tử mảng:

PHP:
<?php
$giatri = array(1,2,3,4,5,6,7,8,9,10);
for ($i = 0; $i < 10 ; $i ++)
echo $giatri[$i]."<br>";
?>
Chạy đoạn mã trên PHP sẽ xuất ra từ 1 đến 10 .

Để nhập giá trị vào thì cũng thế nhá
Ví dụ

PHP:
<?php

for ($i = 0; $i < 10 ; $i ++)
echo $giatri[$i] = $i +1 ;
?>
Cách thứ 2 : Dùng Foreach
Cú pháp :

PHP:
foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement
Ví dụ

PHP:
<?php
$giatri = array(1,2,3,4,5,6,7,8,9,10);
foreach ($giatri as $value)
echo $value."<br>";
?>
Với foreach này để nhập giá trị vào ta phải thêm dấu " &" trước biến $value , như thế này &$value

PHP:
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>
Thêm 1 ví dụ nữa , lần này sẽ có sự xuất hiện của chỉ mục
PHP:
<?php
$arr = array("mot"=>"one", "hai"=>"two","ba"=> "three");
foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value<br />\n";
}
?>
Một cách khác để làm như trên ta sẽ dùng vòng lặp while đi với list() và each(). Xét ví dụ sau , thay vì dùng foreach như trên thì ta dùng while như sau:
PHP:
<?php
$arr = array("one", "two","three");
while (list($key, $value) = each($arr)) {
    echo "Key: $key; Value: $value<br />\n";
}
?>
Lưu ý , list() chỉ hoạt động với mảng có chỉ mục là số và phần tử khởi đầu của mảng có chỉ mục là 0 ( PHP manual nói thế)
List sẽ gán giá trị cho biến được khai báo bên trong hàm list với giá trị là giá trị tương ứng của mảng.
Còn hàm each() sẽ trả về giá trị chỉ mục và giá trị của phần tử mảng hiện tại , đồng thời chuyển vị trí của chỉ mục lên 1 đơn vị , sẽ trả về False nếu vị trí của chỉ mục là vị trí cuối cùng trong mảng.Cặp giá trị trả về này sẽ nằm trong 1 mảng 4 phần tử là 0,1 , key, value . Phần tử 0 và key chứa tên chỉ mục của mảng, phần tử 1 và value tất nhiên sẽ chứa giá trị .
Có thể chỉ sử dụng while và each thôi cũng được
PHP:
<?php
$arr = array("one", "two","three");
while ($phantu = each($arr)) {
    echo "Key: $phantu["key"]; Value: $phantu["value"]<br />\n";
}
?>
Đối với mảng nhiều chiều thỉ cách làm cũng tương tự, chỉ phức tạp hơn là thêm 1 vòng lặp nữa.
PHP:
<?php
$sanpham = array( array("ITL","INTEL","HARD"),
                        array("MIR", "MICROSOFT","SOFT"), 
                        array("PHP", "PHPVN.ORG","TUTORIAL")
                         );
for ($row = 0; $row < 3; $row++) {
    for ($col = 0; $col <3; $col++)
        {
         echo "|".$sanpham[$row][$col];
         }
echo "<br>";
}
?>

Sắp xếp mảng
Do PHP lưu trữ các phần tử trong mảng theo thứ tự chúng được đưa vào mảng, chính vì vậy đôi lúc sẽ nảy sinh nhu cầu sắp xếp các phần từ trong mảng. Để sắp xếp ta có thể dùng các hàm có sẵn của PHP, tiêu biểu là hàm sort

PHP:
<?php 
    $arr = array(5, 3, 6, 4, 2, 1); 
    var_dump($arr); 
    echo "
\n"; 
    sort($arr); 
    var_dump($arr); 
?>
Kết quả thu được sẽ là:

array(6) {
* => int(5) [1]=> int(3) [2]=> int(6) [3]=> int(4) [4]=> int(2) [5]=> int(1) }
array(6) {
* => int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) }

Các bạn có thể thấy là các giá trị đã được sắp xếp tăng dần tuy nhiên các key cũng đã bị thay đổi. Để dữ nguyên các key ban đầu, ta sử dụng hàm asort. Thay thế hàm sort trong ví dụ bằng asort thì sẽ thu được kết quả như sau:
Các bạn có thể thấy là các giá trị đã được sắp xếp tăng dần tuy nhiên các key cũng đã bị thay đổi. Để dữ nguyên các key ban đầu, ta sử dụng hàm asort. Thay thế hàm sort trong ví dụ bằng asort thì sẽ thu được kết quả như sau:


array(6) {

* => int(5) [1]=> int(3) [2]=> int(6) [3]=> int(4) [4]=> int(2) [5]=> int(1) }

array(6) { [5]=> int(1) [4]=> int(2) [1]=> int(3) [3]=> int(4)

* => int(5) [2]=> int(6) }

Các hàm này cũng sẽ làm việc tốt đẹp với các xâu kí tự, tuy nhiên với 1 mảng có các giá trị "report1.pdf", "report5.pdf", "report10.pdf", and "report15.pdf" thì kết quả thu được sẽ là:
PHP:
"report1.pdf", "report10.pdf", "report15.pdf", "report5.pdf"
Đơn giản là vì mã ASCII của "1" nhỏ hơn "5" nên kết quả sẽ ra như vậy. Để giải quyết vấn đề này, thay vì sort và asort ta sử dụng natsort hoặc natcasesort. Kết quả thu được sẽ là:

PHP:
"report1.pdf", "report5.pdf", "report10.pdf", "report15.pdf"
Sắp xếp mảng nâng cao

Giả sử bạn có mảng nhiều chiều sau:

PHP:
<?php 
    $bikes = array(); 
    $bikes["Tourmeister"] = array("name" => "Grande Tour Meister", 
                                "engine_cc" => 1100, 
                                "price" =>12999); 
    $bikes["Slasher1000"] = array("name" => "Slasher XYZ 1000", 
                                "engine_cc" => 998, 
                                "price" => 11450); 
    $bikes["OffRoadster"] = array("name" => "Off-Roadster", 
                                "engine_cc" => 550, 
                                "price" => "4295"); 
?>
Khi muốn sắp xếp mảng $bikes theo price của mỗi phần tử thì làm thế nào? Không thể dùng các hàm ở trên được! Vậy giải pháp duy nhất là ta sẽ phải tự sắp xếp

PHP:
<?php 
    function compare_price($in_bike1, $in_bike2) 
    { 
        if ($in_bike1["price"] > $in_bike2["price"]) 
        { 
            return 1; 
        } 
        else if ($in_bike1["price"] == $in_bik
 

Facebook Comments

Similar threads
Thread starter Title Forum Replies Date
hjephb Hỏi lấy dữ liệu mảng Phpbb3x 1
Admin Elop có thể sẽ bán mảng Xbox, bỏ Bing và đưa Office lên iOS và Android nếu lên chức CEO Microsoft Tin tức CNTT 0
S Sony VN chuẩn bị sáp nhập mảng điện thoại Mạng internet 0
1 [help] mảng css php HTML & CSS 7
F FStorage – Giải Pháp Lưu Trữ Dữ Liệu Tập Trung, An Toàn Cho Doanh Nghiệp Tin tức CNTT 0
F Khuyến mãi đậm sâu cùng VNPay x Fshare - Áp dụng toàn bộ khách hàng (đến hết 31.12.2023) Tin tức CNTT 0
F TIPS TẢI GAME AN TOÀN VÀ NHANH CHÓNG: THỎA SỨC PHÁ ĐẢO THẾ GIỚI ẢO Máy tính 0
katy Android Bảo hiểm nhà ở toàn diện - Bảo vệ ngôi nhà trước mọi rủi ro, cháy nổ Điện thoại di động 8
katy Android Đi học, đi làm, đi chơi có bảo hiểm tai nạn “An tâm toàn diện” lo trước mọi rủi ro Điện thoại di động 0
katy Android Đăng ký Bảo hiểm online - an toàn cho tương lai Điện thoại di động 0
tunglamed MobiFone Meeting - Cung cấp giải pháp hội nghị trực tuyến hoàn toàn miễn phí cho doanh nghiệp Điện thoại di động 2
tunglamed Chuyển tiền qua App My Mobifone - Đơn giản - nhanh chóng - an toàn - tiết kiệm Điện thoại di động 3
Thichquangboom Upload Guest – Giải pháp chia sẻ nội dung nhanh chóng, an toàn không cần đăng nhập Tin tức CNTT 0
cuongpro9x Share Tích hợp toàn bộ sticker xịn của zalo vào xenforo Xenforo 0
haopro Nonstop 2021 Xung Căng Tươi Gây Nghiện Toàn Tập - Nhạc Hay Không Bay Mẹ Đánh Âm nhạc 0
Admin Hướng dẫn xóa sổ hoàn toàn ký tự Nokia S40 cho Xenforo 2 - Remove all nokia s40 characters for xenforo 2 Xenforo 0
theha02021982 Chăm sóc sức khỏe chủ động bằng liệu pháp "Chăm sóc sức khỏe toàn diện tế bào - MRT" Sức khỏe 1
Admin Tình hình nhiễm virus corona trên toàn thế giới cập nhật liên tục và hoàn toàn tự động Tin tức, sự kiện thường ngày 25
T Những công ty Blockchain và Crypto Unicorn trên toàn cầu Tin tức CNTT 0
JohnHary Share Flatsome 3.8.0 ngon sạch an toàn cho anh em Wordpress 2
toanvietnix Thảo luận SSL - Chứng Chỉ Bảo Mật - Mã hóa toàn bộ thông tin Website - Bảo Vệ Webiste luôn an toàn. VPS & Dedicated Server 0
haopro Nonstop Nhạc Sàn 2019 Bom Nguyên Tử Bass Sập Toàn Cầu Âm nhạc 0
T Điều Gì Làm Cho Blockchain Trên Nên An Toàn Tin tức CNTT 0
T Điều gì làm cho Blockchain trên nên an toàn Tin tức CNTT 0
dammechiase Hack Dream League Soccer 2019 Mới Nhất-Đội Hình Arsenal Vô Hạn Coins, Buff Full Chỉ Số 100 Toàn Đội Trò chơi 0
T Mối quan hệ Blockchain và toàn cầu Tin tức CNTT 0
congtust24 Hướng dẫn nhận Thẻ cào Viettel, Vina, Mobi,... hoàn toàn miễn phí trị giá 100.000vnd chỉ với 10.000vnd Tin tức, sự kiện thường ngày 0
Admin Google Chrome ra mắt phiên bản 69.0.3497.81 chính thức, giao diện mới hoàn toàn, đẹp mắt, dễ sử dụng Phần mềm 0
A Huấn luyện an toàn lao động Thảo luận chung 0
P Giải pháp an toàn cho xe hơi của bạn – Đệm Giảm Chấn TTC Trò chuyện linh tinh 5
N Mobifone tiếp tục triển khai đổi sim 4G miễn phí trên toàn quốc Thông tin các mạng di động 27
Admin Hướng dẫn tạo CronJob xóa toàn bộ mail chờ DirectAdmin - How to clear queue mail with CronJob DirectAdmin VPS & Dedicated Server 2
B Mobifone khuyến mãi 50% ngày 6/12 trên toàn quốc Thông tin các mạng di động 2
haopro Nonstop Nonstop Nhạc Sàn Remix 2018 Dập Toàn Tập VycuteSG NST Âm nhạc 0
B MobiFone đổi Sim 4G hoàn toàn miễn phí đến hết 31/12/2017 Thông tin các mạng di động 3
haopro Nonstop Nonstop 2018 BASS CỰC MẠNH Bom Hạt Nhân Đánh Sập Toàn Cầu - DJ Luận BOo Âm nhạc 0
N Hướng dẫn cách đổi sim 4G Mobifone miễn phí trên toàn quốc Thông tin các mạng di động 3
N Mobifone tặng 50% giá trị thẻ nạp tại cửa hàng trên toàn quốc Thông tin các mạng di động 2
B Mobifone - Đổi SIM 4G miễn phí trên toàn quốc Thông tin các mạng di động 5
haopro Nonstop Nonstop nhạc trẻ toàn track củ từ âm phủ đào lên nghe cho đủ Âm nhạc 0
T huấn luyện an toàn vệ sinh LĐ theo nghị định 44 Góc thành viên học tập 1
N Mobifone khuyến mãi 50% thẻ nạp toàn quốc ngày 4/10/2016 Thông tin các mạng di động 7
M Phương pháp Hack like facebook cá nhân an toàn Trò chuyện linh tinh 0
fsend.vn Game pc Trực tiếp trận chung kết toàn quốc giải Counter Strike từ 9h ngày 10/07/2016 Trò chơi 0
fsend.vn Toàn bộ diễn biến trận bán kết và chung kết euro 2016 Thảo luận chung 1
K Xin VTVCab toàn quốc không link VPS & Dedicated Server 0
V Share Mua hosting với giá chỉ 35K – Chất lượng, an toàn, băng thông không giới hạn Chia sẻ mã giảm giá 1
tubotocdo Thảo luận Tool chụp ảnh màn hình toàn bộ website online All Shared Scripts 1
haopro Nonstop Việt Mix Dubstep EDM 2016 ♫ toàn track hay Âm nhạc 0
T chỉ dẫn làm sạch đèn sưởi ấm an toàn và đúng cách Tin tức, sự kiện thường ngày 4

Similar threads

New posts New threads New resources

Back
Top