Chương 3: PHP Arrays

PHP & MySQL
Lê Văn Linh
Khoa Công Nghệ - Trường Cao đẳng Bách Khoa
Định nghĩa
• Là một kiểu dữ liệu đặc biệt, có thể lưu được
  nhiều giá trị dưới cùng một tên
• Mảng có 2 thành phần là chỉ mục và giá trị
• Chỉ mục có thể là số nguyên hoặc là chuỗi
• 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);
Có 3 loại mảng

• Mảng số (numberic array)
• Mảng liên kết (associative array)
• Mảng đa chiều (Multidimensional)
Mảng số

•   Mảng số lưu trữ mỗi 1 phần tử với một số nguyên
    làm chỉ mục
•   Có 3 cách để viết loại mảng này
    •   Tự động:
         $animals = array(“dog",“fish",“cat");
    •   Tường minh:
         $animals[0] = " dog ";
         $animals[1] = " fish ";
         $animals[2] = " cat ";
    •   Ngầm định
         $animals[] = " dog ";
         $animals[] = " fish ";
         $animals[] = " cat ";
Thêm, cập nhật phần tử mảng số

•   Để thay đổi giá trị của 1 mảng, truy cập tới phần tử đó
    và gán lại giá trị mới. Ví dụ:
                $animals[1]=“tiger”;
•   Để thêm 1 phần tử vào mảng chúng ta cũng có thể sử
    dụng như sau:
                 $ animals[] = “beaver";
•   Như vậy nếu chúng ta gọi giá trị: echo $animals[3] thì
    giá trị sẽ là beaver. Vì nó được PHP thêm vào sau
    cùng và ngầm hiểu là giá trị tiếp theo.
ví dụ

Ví dụ
<?php
$names = array(“Peter”, “Quagmire”,“Joe”);
echo $names[1] . " and " . $names[2] .
 " are ". $names[0] . "'s neighbors";
?>

Kết quả
          Quagmire and Joe are Peter's neighbors
Mảng liên kết

•   Mảng được còn được tạo ra bởi cặp khóa, giá trị(key,
    value): $arr[key]=value;
•   Hoặc là: $arr=array(key1 =>value1, key2=>value2…)
•   Một bài toán đặt ra là lưu trữ lương của nhân viên. Giải
    pháp là sử dụng mảng liên kết như sau:
        $salaries["Bob"] = 2000;
        $salaries["Sally"] = 4000;
        $salaries["Charlie"] = 600;
        $salaries["Clare"] = 0;
Chú ý
Để in mảng ta sử dụng hàm print_r như sau:
     print_r($salaries);
Mảng đa chiều

-   Trong mảng liên kết, mỗi phần tử trong mảng
    liên kết là mảng thì ta có được mảng 2 chiều
-   Nếu mỗi phần tử trong mảng con này lại là mảng
    thì ta có mảng 3 chiều
-   Và cứ như vậy ta có được mảng đa chiều

-   Chú ý:
       Ta thường sử dụng mảng 2 chiều
Ví dụ mảng 2 chiều
$a = array(
     "apple" => array(
          "color" => "red",
          "taste" => "sweet",
          "shape" => "round"
     ),
     "orange" => array(
          "color" => "orange",
          "taste" => "tart",
),
     "banana" => array(
          "color" => "yellow",
          "shape" => "banana-shaped"
     )
);
echo $a["apple"]["taste"];    # will output "sweet"
Các thao tác mảng

•   print_r
•   var_dump
•   count
•   isarray
•   isset
•   unset
Sử dụng hàm print_r để in mảng
<?php
$a = array(
     'a'=>'apple'
    ,'b'=>'banna'
    ,'c'=>array('x','y','z')
    );
print_r($a);

Output:
Array ( [a] => apple [b] => banna [c] => Array
( [0] => x [1] => y [2] => z ) )
Sử dụng hàm var_dump để debug
$a = array(
     'a'=>'apple'
    ,'b'=>'banna'
    ,'c'=>array('x','y','z')
);
$b=array('x',5, 10.6, false,
1=>'th', '1'=>'aa', 'td'=>10);

var_dump($a, $b);
Output:
Một số hàm khác

•   Count(): đếm số phần tử của mảng
       $a=array(5,6,7);
       $elements= count($a);//output will be 3
•   is_array(): Kiểm tra 1 biến có phải là biến mảng không?
        is_array($a);
•   isset(): kiểm tra một biến có được thiết lập chưa?
        isset($a[1]);
•   Unset(): xóa một biến
       unset($a[1]);
…
Duyệt mảng

• Sử dụng vòng lặp for
$a = array(4,5,10);
$i_count=count($a);

for($i=0; $i<$i_count; $i++){
    echo $a[$i]."<br/>";
}
•   Output
       4
       5
       10
Duyệt mảng (tiếp theo)

• Foreach
<?php
$paper = array("Copier", "Inkjet", "Laser",
"Photo");
$j = 0;
foreach ($paper as $item)
{
    echo "$j: $item<br/>";
    ++$j;
}?>
Duyệt mảng (tiếp theo)

• Foreach
<?php
$shape=array('blue'=>'small',
'green'=>'large', 'yellow'=>'medium');
foreach ($shape as $key =>$value){
    echo $key,":",$value,"<br/";
}
?>
Duyệt mảng (tiếp theo)

• Foreach
<?php
$shape=array('blue'=>'small',
'green'=>'large', 'yellow'=>'medium');
foreach ($shape as $key =>$value){
    echo $key,":",$value,"<br/";
}
?>
Sắp xếp mảng (bài tập)

•   Tìm hiểu các hàm và cho ví dụ minh họa các hàm sắp
    xếp:
    sort, rsort, asort, arsort, natsort, natcasesort,
    ksort, krsort, usort, uasort, uksort, shuffle,
    array_multisort

Chuong 3 mang

  • 1.
    Chương 3: PHPArrays PHP & MySQL Lê Văn Linh Khoa Công Nghệ - Trường Cao đẳng Bách Khoa
  • 2.
    Định nghĩa • Làmột kiểu dữ liệu đặc biệt, có thể lưu được nhiều giá trị dưới cùng một tên • Mảng có 2 thành phần là chỉ mục và giá trị • Chỉ mục có thể là số nguyên hoặc là chuỗi • 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);
  • 3.
    Có 3 loạimảng • Mảng số (numberic array) • Mảng liên kết (associative array) • Mảng đa chiều (Multidimensional)
  • 4.
    Mảng số • Mảng số lưu trữ mỗi 1 phần tử với một số nguyên làm chỉ mục • Có 3 cách để viết loại mảng này • Tự động: $animals = array(“dog",“fish",“cat"); • Tường minh: $animals[0] = " dog "; $animals[1] = " fish "; $animals[2] = " cat "; • Ngầm định $animals[] = " dog "; $animals[] = " fish "; $animals[] = " cat ";
  • 5.
    Thêm, cập nhậtphần tử mảng số • Để thay đổi giá trị của 1 mảng, truy cập tới phần tử đó và gán lại giá trị mới. Ví dụ: $animals[1]=“tiger”; • Để thêm 1 phần tử vào mảng chúng ta cũng có thể sử dụng như sau: $ animals[] = “beaver"; • Như vậy nếu chúng ta gọi giá trị: echo $animals[3] thì giá trị sẽ là beaver. Vì nó được PHP thêm vào sau cùng và ngầm hiểu là giá trị tiếp theo.
  • 6.
    ví dụ Ví dụ <?php $names= array(“Peter”, “Quagmire”,“Joe”); echo $names[1] . " and " . $names[2] . " are ". $names[0] . "'s neighbors"; ?> Kết quả Quagmire and Joe are Peter's neighbors
  • 7.
    Mảng liên kết • Mảng được còn được tạo ra bởi cặp khóa, giá trị(key, value): $arr[key]=value; • Hoặc là: $arr=array(key1 =>value1, key2=>value2…) • Một bài toán đặt ra là lưu trữ lương của nhân viên. Giải pháp là sử dụng mảng liên kết như sau: $salaries["Bob"] = 2000; $salaries["Sally"] = 4000; $salaries["Charlie"] = 600; $salaries["Clare"] = 0; Chú ý Để in mảng ta sử dụng hàm print_r như sau: print_r($salaries);
  • 8.
    Mảng đa chiều - Trong mảng liên kết, mỗi phần tử trong mảng liên kết là mảng thì ta có được mảng 2 chiều - Nếu mỗi phần tử trong mảng con này lại là mảng thì ta có mảng 3 chiều - Và cứ như vậy ta có được mảng đa chiều - Chú ý: Ta thường sử dụng mảng 2 chiều
  • 9.
    Ví dụ mảng2 chiều $a = array( "apple" => array( "color" => "red", "taste" => "sweet", "shape" => "round" ), "orange" => array( "color" => "orange", "taste" => "tart", ), "banana" => array( "color" => "yellow", "shape" => "banana-shaped" ) ); echo $a["apple"]["taste"]; # will output "sweet"
  • 10.
    Các thao tácmảng • print_r • var_dump • count • isarray • isset • unset
  • 11.
    Sử dụng hàmprint_r để in mảng <?php $a = array( 'a'=>'apple' ,'b'=>'banna' ,'c'=>array('x','y','z') ); print_r($a); Output: Array ( [a] => apple [b] => banna [c] => Array ( [0] => x [1] => y [2] => z ) )
  • 12.
    Sử dụng hàmvar_dump để debug $a = array( 'a'=>'apple' ,'b'=>'banna' ,'c'=>array('x','y','z') ); $b=array('x',5, 10.6, false, 1=>'th', '1'=>'aa', 'td'=>10); var_dump($a, $b);
  • 13.
  • 14.
    Một số hàmkhác • Count(): đếm số phần tử của mảng $a=array(5,6,7); $elements= count($a);//output will be 3 • is_array(): Kiểm tra 1 biến có phải là biến mảng không? is_array($a); • isset(): kiểm tra một biến có được thiết lập chưa? isset($a[1]); • Unset(): xóa một biến unset($a[1]); …
  • 15.
    Duyệt mảng • Sửdụng vòng lặp for $a = array(4,5,10); $i_count=count($a); for($i=0; $i<$i_count; $i++){ echo $a[$i]."<br/>"; } • Output 4 5 10
  • 16.
    Duyệt mảng (tiếptheo) • Foreach <?php $paper = array("Copier", "Inkjet", "Laser", "Photo"); $j = 0; foreach ($paper as $item) { echo "$j: $item<br/>"; ++$j; }?>
  • 17.
    Duyệt mảng (tiếptheo) • Foreach <?php $shape=array('blue'=>'small', 'green'=>'large', 'yellow'=>'medium'); foreach ($shape as $key =>$value){ echo $key,":",$value,"<br/"; } ?>
  • 18.
    Duyệt mảng (tiếptheo) • Foreach <?php $shape=array('blue'=>'small', 'green'=>'large', 'yellow'=>'medium'); foreach ($shape as $key =>$value){ echo $key,":",$value,"<br/"; } ?>
  • 19.
    Sắp xếp mảng(bài tập) • Tìm hiểu các hàm và cho ví dụ minh họa các hàm sắp xếp: sort, rsort, asort, arsort, natsort, natcasesort, ksort, krsort, usort, uasort, uksort, shuffle, array_multisort

Editor's Notes

  • #4 Numeric (scalar) ArrayAssociative ArrayMultidimensional Array
  • #8 Nếu ta muốnlưutrữlươngcủanhânviênsửdụngmảngsốthìvẫnđược, nhưngkhôngphảicáchtốtvìkhôngthểhiệnđượclươngnàycủanhânviênnào. Thayvàođó ta cóthểsửdụngtêncủanhânviênnhưlàkhóa (nhưlàchỉmục) vàgiátrịlàlươngcủanhânviênđó
  • #14 Var_dumpsẽsẽ in đượcnhiềuthông tin hơn, giúp ta gỡrối (debug)