Hướng dẫn dùng haskey trong PHP

Trong phần các kiểu dữ liệu (Data Types), mình có nói sơ qua về mảng nhưng do tính chất quan trọng của mảng trong lập trình PHP nên mình xin nói kỹ hơn ở bài viết này.

Mảng (Array) là gì?

Mảng là một kiểu dữ liệu mà nó có thể chứa nhiều giá trị con bên trong. Hãy tưởng tượng như một mảng là một quyển sách, mỗi trang sách bên trong là giá trị (value) được đánh số bằng số trang (key).

Để tạo mảng, chúng ta sử dụng hàm

array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
3 trong PHP (Từ PHP 5.4 trở lên bạn chỉ cần viết giá trị trong cặp dấu
array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
4 cũng được). Ví dụ bên dưới là tạo một biến hứng mảng.


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo ‘

’;
var_dump( $mang );
echo ‘
’;
?>

Kết quả bạn có như sau:

array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}

Và bạn thấy, chúng ta có một mảng có 4 giá trị (

array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
5). Trong đó nó có 4 key đánh số từ
array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
6 đến
array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
7 cho 4 giá trị tương ứng. Mỗi giá trị bên trong nó sẽ hiển thị kèm theo tên kiểu dữ liệu. Như vậy bạn có thể hiểu,
array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
8 là giá trị trong mảng
array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
9 mà ta dump ra. Các key nó sẽ tự động gán khi khởi tạo mảng.

Để lấy giá trị trong mảng như ý muốn của mình, chúng ta sẽ lấy ra bằng cách viết tên biến kèm theo key cần lấy giá trị như sau:


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

Mảng không tuần tự

Ở trên bạn đã làm quen với mảng cơ bản, và mặc định khi chúng ta khai báo giá trị vào mảng mà nó tự đánh số thứ tự cho các key bên trong thì ta gọi đó là mảng tuần tự. Nhưng trong nhiều trường hợp chúng ta có mảng quá bự, muốn tự đặt tên key cho dễ nhớ thì ta gọi đó là mảng không tuần tự.

Để khai báo tên key kèm giá trị, chúng ta chỉ việc viết giá trị là ‘


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

0 vào mảng.


$web = array(
‘wp’    =>    ‘WordPress’,
‘css’    => ‘CSS’,
‘php’    => ‘PHP’,
25        => 100
);

echo ‘

’;
var_dump( $web );
echo ‘
’;
?>

Tên key có thể là dữ liệu kiểu chuỗi, kiểu số tự nhiên, số trôi nổi, dữ liệu mảng.

Mảng đa chiều

Mảng đa chiều chỉ đơn giản là một mảng chứa nhiều giá trị mảng lồng bên trong, tức là nó vẫn có key nhưng giá trị lại là một mảng mới. Ví dụ:


$web =
    array(
    ‘php’    =>
        array(
        ‘wp’    => ‘WordPress’,
        ‘joomla’    => ‘Joomla’,
        ‘drupal’    => ‘Drupal’,
        ‘mt’    =>    ‘Magento’
        ),
    ‘asp’    =>
        array(
        ‘netnuke’    =>    ‘DotNetNuke’,
        ‘kentico’    =>    ‘Kentico CMS’
        )
    );

echo ‘

’;
    print_r($web);
echo ‘
’;
?>

Và để lấy giá trị của mảng đa chiều, bạn có thể sử dụng vòng lặp (chưa học tới) hoặc viết tên biến kèm theo tên key của mảng mẹ và tên key của mảng con như


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

1.

Tips: Đối với mảng, bạn có thể dùng hàm print_r() để dump thay vì sử dụng hàm var_dump() nếu không cần xem loại kiểu dữ liệu của giá trị.

Các hàm làm việc với mảng trong PHP

Khi làm việc với mảng, bạn có thể sẽ cần sử dụng một số hàm có sẵn trong PHP để thao tác với mảng. Dưới đây là một số hàm thông dụng để làm việc với mảng.

Xem thêm: Danh sách các hàm làm việc với mảng

sizeof( $arr )

Hàm


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

2 được sử dụng để in ra tổng số phần tử có bên trong một mảng. Lưu ý là nó không thể đếm được toàn bộ phần tử trong mảng đa chiều.


    $name = array(‘John’, ‘David’, ‘Mickey’, ‘Jackson’, ‘Binladen’);

    echo ‘

’;
    echo ‘Có ‘. sizeof($name) . ‘ cái tên.’;
    echo ‘
’;
?>

array_values( $arr )

Hàm


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

3 sẽ rất có ích nếu như bạn muốn tạo ra một mảng mới và mảng mới này sẽ chứa toàn bộ giá trị của mảng được sử dụng trong hàm này.


    $hero = array(
        ‘name’    => ‘Thạch’,
        ‘age’    => ’23’,
        ‘race’    => ‘Human’,
        ‘Weapon’    => ‘Rocket’
    );

    $thach = array_values( $hero );

    print_r( $thach );
?>

array_keys( $arr )

Nếu như hàm


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

3 sẽ bóc toàn bộ giá trị trong mảng bỏ vào một mảng mới thì hàm

$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

5 sẽ bóc toàn bộ key trong mảng bỏ vào một mảng mới.


$hero = array(
    ‘name’    => ‘Thạch’,
    ‘age’    => ’23’,
    ‘race’    => ‘Human’,
    ‘Weapon’    => ‘Rocket’
);

$class = array_keys( $hero );

print_r( $class );
?>

each( $arr )

Đây là một hàm mà nó thường dùng kèm với vòng lặp (thường là vòng lặp


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

6) để in ra một cặp key và giá trị của nó. Thực ra cái này cũng không thường được sử dụng cho lắm nhưng mà nó có thể giúp bạn sử dụng cùng lúc cả key và giá trị linh hoạt.


$hero = array(
    ‘name’    => ‘Thạch’,
    ‘age’    => ’23’,
    ‘race’    => ‘Human’,
    ‘Weapon’    => ‘Rocket’
);

while( list($key, $value) = each( $hero )) {
    echo "$key – $value
";
}
?>

array_reverse( $arr )

Hàm này được sử dụng để đảo ngược thứ tự giá trị trong mảng.


    $number = array(25,44,23,15,53,75);

    echo ‘

’;
    print_r ( array_reverse( $number ) );
    echo ‘

?>

array_merge( $arr1, $arr2,… )

Hàm này được sử dụng để gộp các dữ liệu của hai hoặc nhiều mảng lại với nhau.

array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
0

join( $spec, $arr )

Hàm này có tác dụng sẽ lấy toàn bộ giá trị trong mảng và có thể cách nhau bằng một ký tự nhất định. Ví dụ dưới đây là lấy toàn bộ giá trị ra ngoài và cách nhau bởi dấu phẩy.

array(4) {
  [0]=>
  string(9) "WordPress"
  [1]=>
  string(3) "CSS"
  [2]=>
  string(3) "PHP"
  [3]=>
  string(10) "Javascript"
}
1

Ngoài ra hàm này còn có một cái tên khác nữa đó là


$mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

echo $mang[2]; // in PHP ra
?>

7.

Các hàm sắp xếp mảng

Nếu bạn cần thiết lập lại thứ tự các giá trị bên trong mảng thì có thể sử dụng các hàm sau đây:


  • $mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

    echo $mang[2]; // in PHP ra
    ?>

    8 – Xếp mảng theo thứ tự tăng dần.

  • $mang = array( ‘WordPress’, ‘CSS’, ‘PHP’, ‘Javascript’ );

    echo $mang[2]; // in PHP ra
    ?>

    9 – Xếp mảng theo thứ tự giảm dần.

  • $web = array(
    ‘wp’    =>    ‘WordPress’,
    ‘css’    => ‘CSS’,
    ‘php’    => ‘PHP’,
    25        => 100
    );

    echo ‘

    ’;
    var_dump( $web );
    echo ‘
    ’;
    ?>

    0 – Xếp mảng theo thứ tự tăng dần, dựa vào giá trị.

  • $web = array(
    ‘wp’    =>    ‘WordPress’,
    ‘css’    => ‘CSS’,
    ‘php’    => ‘PHP’,
    25        => 100
    );

    echo ‘

    ’;
    var_dump( $web );
    echo ‘
    ’;
    ?>

    1 – Xếp mảng theo thứ tự tăng dần, dựa vào key.

  • $web = array(
    ‘wp’    =>    ‘WordPress’,
    ‘css’    => ‘CSS’,
    ‘php’    => ‘PHP’,
    25        => 100
    );

    echo ‘

    ’;
    var_dump( $web );
    echo ‘
    ’;
    ?>

    2 – Xếp mảng theo thứ tự giảm dần, dựa vào giá trị.

  • $web = array(
    ‘wp’    =>    ‘WordPress’,
    ‘css’    => ‘CSS’,
    ‘php’    => ‘PHP’,
    25        => 100
    );

    echo ‘

    ’;
    var_dump( $web );
    echo ‘
    ’;
    ?>

    3 – Xếp mảng theo thứ tự giảm dần, dựa vào key.

Lời kết

Đấy, về khái niệm mảng trong PHP thì chỉ có bấy nhiêu thôi nhưng nó quan trọng là vì nó được sử dụng nhiều và rất linh hoạt trong nhiều trường hợp. Ví dụ khi bạn sử dụng nhiều hàm trong WordPress như


$web = array(
‘wp’    =>    ‘WordPress’,
‘css’    => ‘CSS’,
‘php’    => ‘PHP’,
25        => 100
);

echo ‘

’;
var_dump( $web );
echo ‘
’;
?>

4 chẳng hạn, nó sẽ trả về giá trị kiểu mảng và lúc đó bạn sẽ làm việc với nó để lấy dữ liệu mà bạn cần. Về vấn đề này mình sẽ giải thích kỹ hơn ở bài các hàm thông dụng trong WordPress.