1. Hàm array_pad() trong PHP

Hàm array_pad() trong PHP được dùng để thêm phần tử vào mảng. Việc thêm ở đây sẽ là thêm một hoặc nhiều phần tử cho đến khi mảng đạt đến chiều dài mà ta đã định sẵn. Nếu ta gán tham số với kích thước âm thì hàm array_pad() sẽ chèn các phần tử mới vào trước các phần tử ban đầu của mảng. Ngược lại nếu ta gán tham số với kích thước dương thì hàm sẽ chèn các phần tử mới vào sau các phần tử ban đầu của mảng.

Có một số câu hỏi nếu ta gán kích thước mảng mới nhỏ hơn kích thước mảng ban đầu thì sao? Có phần tử nào bị xóa đi không. Câu trả lời là không. Sẽ không có bất kỳ phần tử nào bị xóa đi khi ta dùng hàm array_pad() này nhé. Và ta có thể thêm nhiều nhất là 1048576 phần tử cùng một lúc.

2. Cú pháp hàm array_pad() trong PHP

Ta có cú pháp hàm array_pad() trong PHP là:

array_pad($input_array, $input_size, $values)

Trong đó :

  • $input_array : mảng đầu vào mà ta cần sửa đổi
  • $input_size : tham số này đề cập đến kích thước mảng mới sẽ trả về. Hay ta có thể đây là chiều dài của mảng mới khi trả về
  • $values : giá trị của phần tử cần thêm vào mảng
  • Các tham số này đều là bắt buộc!

Với tham số $input_size sẽ biểu hiện việc ta sẽ thêm phần tử vào đâu cuối mảng. Nếu $input_size mang giá trị dương thì giá trị mới sẽ được thêm vào bên phải của mảng(sau các phần tử cũ). Ngược lại nếu $input_size mang giá trị âm thì giá trị mới sẽ được thêm vào bên trái của mảng(trước các phần tử cũ). Nhưng nếu giá trị tuyệt đối của $input_size lại bằng với với độ dài với mảng input thì sẽ không có gì xảy ra cả.

Cuối cùng giá trị trả về sẽ là mảng mới có kích thước $input_size và được thêm vào những giá trị $values .

Ví dụ : chèn giá trị mới vào trong mảng và mảng mới có 5 phần tử

<?php
$a=array("Python","Java");

echo '<pre>';
print_r(array_pad($a,5,"PHP"));
?>

Kết quả

Array
(
    [0] => Python
    [1] => Java
    [2] => PHP
    [3] => PHP
    [4] => PHP
)

Những tham số trong ví dụ này đã khá rõ ràng. Với mảng đầu vào sẽ là $a , độ dài mảng mới là 5 và phần tử được thêm vào “PHP” . Cứ vậy ta áp dụng công thức là đã hoàn thành.

3. Ví dụ về hàm array_pad() trong PHP

Ví dụ 1: chèn giá trị mới vào đầu mảng

<?php
$a=array("Python","Java");

echo '<pre>';
print_r(array_pad($a,-5,"PHP"));
?>

Kết quả

Array
(
    [0] => PHP
    [1] => PHP
    [2] => PHP
    [3] => Python
    [4] => Java
)

Ở đây để thêm phần tử vào đầu mảng thì chỉ cần sửa độ dài mảng mới thành số âm là được.

Ví dụ 2: thêm phần tử vào giữa mảng

<?php
$array = array(2 => "Python", 3 => "Java");
// Tạo phần tử phía sau
$array = array_pad($array, count($array)+2, "PHP");

$num = -(count($array)+2);
// Tạo phần tử phía trước
$array = array_pad($array, $num, "PHP");

echo '<pre>';
print_r($array);

?>

Kết quả

Array
(
    [0] => PHP
    [1] => PHP
    [2] => Python
    [3] => Java
    [4] => PHP
    [5] => PHP
)

Ở đây ta dùng hàm count() sẽ đếm số phần tử trong mảng. Hàm sẽ trả về số nguyên là số phần tử trong mảng. Ta sử dụng count($array)+2 nghĩa là sẽ thêm 2 phần tử mới phía sau của mảng. Còn -(count($array)+2) có nghĩa là ngược lại với giá trị âm thì ta sẽ thêm phần tử mới vào bên trái. Như vậy sau khi thao tác ta đã thêm được mảng ban đầu vào giữa rồi. Tuy nhiên đây chỉ là mình giới thiệu và là cách làm không hiệu quả.

Chú ý

Nếu ta cố gắng chèn một mảng với key mang giá trị số thì các key sẽ được đánh số lại theo thứ tự tăng dần bắt đầu từ 0. Còn với key dạng chuỗi thì ta vẫn sẽ sử dụng bình thường .

<?php
$a = array('PHP'=>'3', 'Java'=>4, 'Python'=>'5');
echo '<pre>';
print_r($a);
echo '<pre>';
print_r(array_pad($a, 5, 'HTML'));


$b = array(1229600459=>'CSS', 1229604787=>60, 1229609459=>'C++');
echo '<pre>';
print_r($b);
echo '<pre>';
print_r(array_pad($b, 5, 'HTML'));
?>

Kết quả

Array
(
    [PHP] => 3
    [Java] => 4
    [Python] => 5
)
Array
(
    [PHP] => 3
    [Java] => 4
    [Python] => 5
    [0] => HTML
    [1] => HTML
)
Array
(
    [1229600459] => CSS
    [1229604787] => 60
    [1229609459] => C++
)
Array
(
    [0] => CSS
    [1] => 60
    [2] => C++
    [3] => HTML
    [4] => HTML
)