Đã có bài sơ lượt qua mảng trong PHP. Bài này chúng ta sẽ tìm hiểu chi tiết thêm về các hàm xử lý mảng (array).

Các hàm xử lý mảng – Array trong PHP.

1. array_change_key_case. (PHP 4 >= 4.2.0, PHP 5, PHP 7)

array array_change_key_case ( array $array [, int $case = CASE_LOWER ] )

Chuyển tất cả các key trong mảng $array sang chữ hoa nếu $case = CASE_UPPER và sang chữ thường nếu $case =CASE_LOWER. Kết quả trả về là mảng với các key là chữ hoa hoặc chữ thường, hoặc False nếu $array không phải mảng.

[php]

<?php $input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
?>

[/php]

Kết quả hiển thị:

[php]

Array
(
[FIRST] => 1
[SECOND] => 4
)

[/php]

2. array_chunk. (PHP 4 >= 4.2.0, PHP 5, PHP 7)

array array_chunk ( array $array , int $size [, bool $preserve_keys = FALSE ] )

Chia các phần tử trong $array thành (các) mảng mới trong đó mỗi phần tử của mảng mới là một mảng gồm $size phần tử.

Parameters:

  • $array là mảng cần chuyển đổi.
  • $size số phần tử sẽ được chia ra từ $array.
  • $preserve_keys có 2 giá trị TRUE hoặc FALSE(mặc định). Thiết lập TRUE thì các phần tử của mảng mới sẽ được đánh chỉ mục tăng dần cho tất cả các nhóm, nếu bằng FALSE thì các phần tử sẽ tính chỉ số là 0 cho mỗi nhóm.

Hàm array_chunk() sẽ trả kết quả là một mảng mà ta đã cắt và sắp xếp, số phần tử sẽ phụ thuộc vào tham số $size.

[php]

<?php $input_array = array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’); print_r(array_chunk($input_array, 2)); print_r(array_chunk($input_array, 2, true)); ?>

[/php]

Kết quả hiển thị:

[php]

Array
(
[0] => Array
(
[0] => a
[1] => b
)

[1] => Array
(
[0] => c
[1] => d
)

[2] => Array
(
[0] => e
)

)
Array
(
[0] => Array
(
[0] => a
[1] => b
)

[1] => Array
(
[2] => c
[3] => d
)

[2] => Array
(
[4] => e
)

)

[/php]

3. array_column (PHP 5 >= 5.5.0, PHP 7)

array array_column ( array $input , mixed $column_key [, mixed $index_key = NULL ] )

Dùng để lấy một cột trong một mảng và trả về giá trị từ cột đó.

Parameters:

  • $array : nó là 1 mảng chứa nhiều thành phần mảng khác trong đó – mảng đa chiều.
  • $column_key : là key trong $array của giá trị muốn lấy ra. Mặc định các giá trị này có key là số nguyên hoặc có thể tùy chỉnh bằng $index_key.
  • $index_key : cũng là key trong $array, giá trị của nó sẽ được làm key của mảng kết quả, tham số này nếu không truyền vào thì mảng trả về có key là số nguyên, ngược lại key sẽ là giá trị của cột mà ta chỉ định.

Không có $index_key:

[php]

<?php $records = array( array(‘id’ => 2135,’first_name’ => ‘John’,’last_name’ => ‘Doe’),
array(‘id’ => 3245,’first_name’ => ‘Sally’,’last_name’ => ‘Smith’),
array(‘id’ => 5342,’first_name’ => ‘Jane’,’last_name’ => ‘Jones’),
array(‘id’ => 5623,’first_name’ => ‘Peter’,’last_name’ => ‘Doe’)
);
$first_names = array_column($records, ‘first_name’);
print_r($first_names);
?>

[/php]

Kết quả:

[php]

Array
(
[0] => John
[1] => Sally
[2] => Jane
[3] => Peter
)

[/php]

Có $index_key:

[php]

<?php $last_names = array_column($records, ‘last_name’, ‘id’); print_r($last_names); ?>

[/php]

Kết quả:

[php]

Array
(
[2135] => Doe
[3245] => Smith
[5342] => Jones
[5623] => Doe
)

[/php]

4. array_combine (PHP 5, PHP 7)

array array_combine ( array $keys , array $values )

Tạo một mảng sử dụng các giá trị từ mảng $keys là các key và các giá trị từ mảng $values là các value tương ứng.

Parameters:

  • $key: mảng được dùng làm key cho mảng kết quả, các giá trị không đúng cho khoá của mảng sẽ được chuyển đổi sang kiểu string.
  • $values: mảng được dùng làm value cho mảng kết quả.

Mảng mới sẽ được trả về, và là False nếu số phần tử của 2 mảng $key và $values không bằng nhau.

[php]

<?php $a = array(‘green’, ‘red’, ‘yellow’); $b = array(‘avocado’, ‘apple’, ‘banana’); $c = array_combine($a, $b); print_r($c); ?>

[/php]

Kết quả:

[php]

Array
(
[green] => avocado
[red] => apple
[yellow] => banana
)

[/php]

5. array_count_values (PHP 4, PHP 5, PHP 7)

array array_count_values ( array $array )

Đếm số lần xuất hiện của các phần tử giống nhau trong mảng $array và trả về một mảng kết quả.

[php]

<?php $array = array(1, "hello", 1, "world", "hello"); print_r(array_count_values($array)); ?>

[/php]

Kết quả:

[php]

Array
(
[1] => 2
[hello] => 2
[world] => 1
)

[/php]

6. array_diff_assoc (PHP 4 >= 4.3.0, PHP 5, PHP 7)

array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )

Có tác dụng lấy ra các phần tử ở mảng thứ nhất không nằm ở tất cả các mảng còn lại.

[php]

<?php $array1 = array("a" => "green", "b" => "brown", "d" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>

[/php]

Kết quả:

Array
(
[b] => brown
[d]=> blue
[0] => red
)

Kết quả trên có [0]=> red vì, ở mảng 1 red có key là 0, còn ở mảng 2 red có key là 1, nên red ở array1 được lấy ra.

7. array_diff_key (PHP 5 >= 5.1.0, PHP 7)

array array_diff_key ( array $array1 , array $array2 [, array $... ] )

Có tác dụng lấy các phần tử không giống nhau ở tất cả các mảng.

[php]

<?php $array1 = array(‘blue’ => 1, ‘red’ => 2, ‘green’ => 3, ‘purple’ => 4);
$array2 = array(‘green’ => 5, ‘yellow’ => 7, ‘cyan’ => 8);

var_dump(array_diff_key($array1, $array2));
?>

[/php]

Kết quả:

[php]

array(3) {
["blue"]=>
int(1)
["red"]=>
int(2)
["purple"]=>
int(4)
}

[/php]

8. array_diff_uassoc  (PHP 5, PHP 7)

array array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callback$key_compare_func )

Hàm array_diff_uassoc() sẽ trả về một mảng các phần tử theo điều kiện của hàm $key_compare_func truyền vào, điều này khác với array_diff_assoc() là hàm để so sánh theo toán tử bằng.

Parameters:

  • $array1 là mảng thứ nhất, kết quả trả về sẽ nằm trong mảng này.
  • $array2 là mảng thứ hai.
  • $key_compare_func là hàm do người dùng định nghĩa, nếu kết quả nó trả về true thì phần tử được check đó được chọn, ngược lại sẽ không được chọn.
    • Hàm này phải trả về 0 nếu $key1 = $key2lớn hơn 0 nếu$key1 > $key2 và bé hơn 0 nếu $key1 < $key2
    • Sự so sánh dựa vào thứ tự trong mã ASCII

Hàm key_compare_func sẽ có hai tham số truyền vào là $a và $b chính là các key lần lượt là key của  mảng thứ nhất trong danh sách tham số truyền vào và các key của mảng còn lại. Nếu hàm trả về khác 0 (lớn hơn 0 hoặc bé hơn 0) thì phần tử của lượt đó được chọn.

[php]

<?php function key_compare_func($a, $b) { if ($a === $b) { return 0; } return ($a > $b)? 1:-1;
}

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
?>

[/php]

Kết quả:

[php]

Array
(
[b] => brown
[c] => blue
[0] => red
)

[/php]

9. array_diff_ukey (PHP 5 >= 5.1.0, PHP 7)

array array_diff_ukey ( array $array1 , array $array2 [, array $array3... ], callback$key_compare_func )

So sánh key của array1 với key của array2 và trả về sự khác nhau. Hàm này giống hàm array_diff() ngoại trừ phép so sánh được thực hiện trên các key thay vì các value.

Không giống hàm array_diff_key(), một hàm callback do người sử dụng cung cấp để so sánh các chỉ mục.

Parameters:

  • $array1: Bắt buộc. Mảng nguồn để mảng khác so sánh.
  • $array2: Bắt buộc. Một mảng để được so sánh với mảng nguồn.
  • $array3: Không bắt buộc. Một mảng để được so sánh với mảng nguồn.
  • $key_compare_func là hàm do người dùng định nghĩa, nếu kết quả nó trả về true thì phần tử được check đó được chọn, ngược lại sẽ không được chọn.
    • Hàm này phải trả về 0 nếu $key1 = $key2lớn hơn 0 nếu$key1 > $key2 và bé hơn 0 nếu $key1 < $key2
    • Sự so sánh dựa vào thứ tự trong mã ASCII

Hàm sẽ trả về tất cả đầu vào của array1 mà không có mặt trong mảng khác.

[php]

<?php function key_compare_func($a,$b) { if ($a===$b) { return 0; } return ($a>$b) ? 1: -1;
}
$array1 = array(0=>"banana", 1=>"orange", 2=>"grapes");
$array2 = array(3=>"apple",1=>"apricot", 5=>"mango");

print_r(array_diff_ukey($array1,$array2,"key_compare_func"));
?>

[/php]

Kết quả:

[php]

Array
(
[0] => banana
[2] => grapes
)

[/php]

10. array_diff (PHP 4 >= 4.0.1, PHP 5, PHP 7)

array array_diff ( array $array1 , array $array2 [, array $array3... ] )

So sánh array1 với array2 và $array… trả về sự khác nhau.

Parameters:

  • $array1: Bắt buộc. Mảng nguồn để mảng khác so sánh.
  • $array2: Bắt buộc. Một mảng để được so sánh với mảng nguồn.
  • $array3: Không bắt buộc. Một mảng để được so sánh với mảng nguồn.

[php]

<?php $input_array1 = array("orange", "banana", "apple"); $input_array2 = array("orange", "mango", "apple"); print_r(array_diff($input_array1, $input_array2)); ?>

[/php]

Kết quả:

[php]

Array
(
[1] => banana
)

[/php]

Trên là 10 hàm xử lý mảng trong các bài tổng hợp mảng của nongdanit.info. Bài tiếp theo của tổng hợp này sẽ là các hàm như: array_fill_keys, array_fill, array_filter…

Tham khảo: http://php.net

[thongbao]

  1. Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
  2. Cảm ơn các bạn đã đọc.

[/thongbao]

[PHP] Các hàm xử lý mảng (array) P1