Các hàm mảng trong php là gì?

Có thể bạn đang sử dụng mảng hàng ngày với tư cách là nhà phát triển PHP, vì đây là kiểu cấu trúc dữ liệu tập hợp mặc định trong PHP. Điều bạn có thể không biết là PHP cung cấp rất nhiều hàm thao tác mảng tích hợp, chúng hiệu quả hơn so với giải pháp vùng đất của người dùng, bởi vì chúng được tích hợp vào lõi và được thiết kế để xử lý hầu hết các trường hợp cạnh

Trong loạt bài hướng dẫn này, chúng ta sẽ tìm hiểu một số hàm mảng có sẵn. Hiển thị các trường hợp sử dụng có thể có của họ một cách toàn diện nhất có thể. Hy vọng loạt bài này sẽ cải thiện cách bạn xử lý mảng PHP và làm cho mã của bạn tốt hơn

Trong toàn bộ loạt bài, chúng tôi sẽ hoạt động trên một mảng có tên là $books

$books = [
    'Head First Design Patterns',
    'Design Patterns: Elements of Reusable Object-Oriented Software',
    'Agile Software Development, Principles, Patterns, and Practices',
    'Patterns of Enterprise Application Architecture',
];

#array_map & array_walk

Khi chúng ta cần một định dạng mới của một mảng hiện có, chúng ta có thể định dạng lại nó bằng một vòng lặp

Ví dụ: để tạo định dạng mới của $books như hình bên dưới

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]

Chúng ta có thể làm điều đó bằng tay

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}

Hàm mảng PHP tích hợp Array_map cho phép chúng ta áp dụng gọi lại cho từng phần tử của một mảng

Để hoàn thành nhiệm vụ tương tự ở trên, chúng ta có thể làm

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];

PHP cung cấp một hàm mảng khác là array_walk, hoạt động tương tự như array_map

Để hoàn thành nhiệm vụ tương tự ở trên với array_walk, chúng ta có thể làm

array_walk[$books, function [&$value, $key] {
    return $value = ['name' => $value];
}];

Một vài điểm khác biệt chính mà chúng ta có thể thấy giữa array_map và array_walk

  • Mảng đầu vào được chuyển đến array_walk theo tham chiếu, trong khi đó là các giá trị với array_map
  • Cuộc gọi lại trong array_walk chấp nhận cả khóa và giá trị mảng, trong khi trong array_map, nó chỉ chấp nhận giá trị mảng

#Bí quyết, Thuật, mẹo

Chức năng array_map không cung cấp bất kỳ cách nào để chuyển mảng KEY cho chức năng gọi lại. Tuy nhiên, nó cho phép chúng ta truyền vào nhiều tham số

Một thủ thuật hay để cho phép chúng tôi chuyển cả giá trị và khóa cho hàm gọi lại

array_map[function [$value, $key] {
     
}, $array, array_keys[$array]];

#array_reduce

Khi chúng ta muốn duyệt qua một mảng, hãy thực hiện một số logic và trả về một giá trị duy nhất ở cuối. Thông thường chúng ta sẽ làm điều đó thông qua một câu lệnh lặp

Ví dụ: để đếm tổng số ký tự trong mảng $books. Chúng ta có thể làm với một vòng lặp như hình bên dưới

$totalChars = 0;
foreach [$books as $book] {
    $totalChars += strlen[$book];
}

PHP đi kèm với hàm mảng tích hợp Array_reduce. Nó cho phép chúng ta giảm lặp đi lặp lại mảng thành một giá trị bằng cách sử dụng hàm gọi lại

Để hoàn thành nhiệm vụ tương tự ở trên, chúng ta có thể làm

?

  $total = array_reduce[$books, function [$totalChars, $current] {
      return $totalChars += strlen[$current];
  }, 0]

#chữ ký chức năng

Chữ ký của array_reduce đáng nói ở đây

________số 8
  • Tham số đầu tiên $array là nơi chúng tôi cung cấp mảng đầu vào

  • Tham số thứ hai $callback cung cấp chữ ký hàm sau

callback [ mixed $carry , mixed $item ]
  • $carry mang giá trị của lần lặp trước

  • $item giữ giá trị hiện tại

  • Tham số tùy chọn thứ ba, có giá trị mặc định là NULL, cho phép chúng ta đặt giá trị bắt đầu. Trong trường hợp của chúng tôi, chúng tôi đặt nó thành 0, vì giá trị ban đầu của tổng số ký tự phải bằng không

#array_pop

Khi chúng ta cần trích xuất giá trị cuối cùng của một mảng, thông thường chúng ta sẽ làm

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
0

Một điều chúng ta cần lưu ý ở đây

  • Mảng $books có thể trống tùy thuộc vào vị trí của nó, vì vậy chúng ta cần xác thực nó trước khi trích xuất phần tử cuối cùng, nếu không, chúng ta sẽ nhận được loại lỗi nghiêm trọng "không tìm thấy chỉ mục", về cơ bản sẽ chấm dứt quá trình thực thi mã hiện tại

Chúng tôi có thể kết thúc với một cái gì đó tương tự như hình dưới đây

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
1

Hàm mảng PHP tích hợp cho trường hợp sử dụng như vậy là array_pop. Để trích xuất giá trị cuối cùng của $books, chúng ta chỉ cần làm

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
2

Bên cạnh việc cải thiện hiệu suất của nó, chức năng này tự xử lý trường hợp cạnh mảng trống. Khi mảng trống, nó trả về giá trị NULL có thể dự đoán được

#thận trọng

Một lưu ý khi sử dụng chức năng này. Tham số được truyền bằng cách tham chiếu đến chức năng này. Nó sẽ thay đổi mảng được cung cấp bên cạnh việc trả về giá trị cuối cùng

Tác dụng phụ này có thể được chứng minh như hình dưới đây

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
3

Kết quả chạy tập lệnh trên

?

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
4

#array_shift

Khi cần trích xuất giá trị đầu tiên của một mảng, thông thường chúng ta sẽ thực hiện

$firstBook = $books[0];

Một điều chúng ta cần lưu ý ở đây

  • Mảng $books có thể trống tùy thuộc vào vị trí của nó. Chúng ta cần xác thực nó trước khi trích xuất phần tử đầu tiên. Nếu không, chúng tôi sẽ gặp loại lỗi nghiêm trọng "không tìm thấy chỉ mục", về cơ bản sẽ chấm dứt việc thực thi mã hiện tại

Chúng tôi có thể kết thúc với một cái gì đó tương tự như hình dưới đây

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
5

Hàm mảng PHP tích hợp cho trường hợp sử dụng như vậy là array_shift. Để trích xuất giá trị đầu tiên của $books, chúng ta chỉ cần làm

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
6

Bên cạnh việc cải thiện hiệu suất của nó, chức năng này tự xử lý trường hợp cạnh mảng trống. Khi mảng trống, nó trả về giá trị NULL có thể dự đoán được

#thận trọng

Một lưu ý khi sử dụng chức năng này. Tham số được truyền bằng cách tham chiếu đến hàm này như hàm array_pop. Nó sẽ thay đổi mảng được cung cấp bên cạnh việc trả về giá trị cuối cùng

Tác dụng phụ này có thể được chứng minh như hình dưới đây

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
3

Kết quả chạy tập lệnh trên

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
8

#array_push

Khi chúng ta cần thêm nhiều phần tử vào một mảng hiện có, thông thường chúng ta sẽ làm. xa lạ

[
    [
        'name' => 'Head First Design Patterns',
    ],
    [
        'name' => 'Design Patterns: Elements of Reusable Object-Oriented Software',
    ],
    [
        'name' => 'Agile Software Development, Principles, Patterns, and Practices',
    ],
    [
        'name' => 'Patterns of Enterprise Application Architecture',
    ],
]
9

Hàm mảng PHP tích hợp Array_push có thể làm cho điều này trở nên thanh lịch hơn. Để thêm nhiều phần tử vào cuối $books, chúng ta chỉ cần làm

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
0

#thận trọng

Chúng ta cần phải rất rõ ràng về các tham số và giá trị trả về của hàm này. Nó có thể gây nhầm lẫn nếu bạn không hiểu rõ về chúng

  • Tham số đầu tiên, mảng để thêm phần tử vào, được truyền theo tham chiếu
  • Giá trị trả về của hàm này là số phần tử mới trong mảng. Hãy ghi nhớ, nó không phải là mảng kết quả với các yếu tố mới

Để hiển thị các điểm trên bằng mẫu mã

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
1

Kết quả của việc chạy tập lệnh trên

?

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
2

#array_unshift

Khi chúng ta cần thêm một hoặc nhiều phần tử vào một mảng hiện có, thông thường chúng ta sẽ thực hiện với một vòng lặp

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
3

Hàm mảng PHP tích hợp Array_unshift cung cấp giải pháp dễ sử dụng. Để thêm các phần tử trả trước $books, chúng ta chỉ cần làm

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
4

#thận trọng

Giống như array_push, chúng ta cần hiểu rất rõ ràng về các tham số và giá trị trả về của hàm này

  • Tham số đầu tiên, mảng để thêm các phần tử vào, được truyền theo tham chiếu
  • Giá trị trả về của hàm này là số phần tử mới trong mảng. Nó không phải là mảng kết quả với các phần tử mới

Để hiển thị các điểm trên bằng mẫu mã

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
5

Kết quả của việc chạy tập lệnh trên

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
6

#array_slice

Khi chúng ta cần trích xuất một phần của mảng hiện có và gán giá trị của nó cho một mảng mới khác. Chúng tôi sẽ làm thông thường

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
7

Hàm mảng PHP tích hợp Array_slice cung cấp một giải pháp dễ sử dụng. Để trích xuất một phần của $books, chúng ta chỉ cần làm

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
8

#array_merge

Khi chúng ta cần hợp nhất hai mảng thành một. Chúng ta có thể làm thủ công với các vòng lặp

$booksNew = [];
foreach [$books as $book] {
    $booksNew[] = [
        'name' => $book
    ];
}
9

Hàm mảng PHP tích hợp Array_merge cung cấp một cách thanh lịch. Để hợp nhất $otherBooks với $books, chúng ta chỉ cần làm

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
0

#thận trọng

Nếu các mảng đầu vào có các khóa chuỗi giống nhau, thì giá trị sau của khóa đó sẽ ghi đè lên giá trị trước đó. Tuy nhiên, nếu mảng chứa các phím số, các giá trị sau sẽ được thêm vào mảng đầu tiên

Chúng ta có thể chứng minh điểm này như hình dưới đây

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
1

Kết quả của việc chạy tập lệnh trên

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
2

#Một trường hợp sử dụng phổ biến

Hàm array_merge thường được sử dụng để cung cấp một số cài đặt mặc định nhưng vẫn cho phép người dùng ghi đè lên chúng

Ví dụ

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
3

#array_sum

Khi chúng ta cần lấy tổng của một mảng các giá trị số. Chúng ta có thể làm thủ công với vòng lặp

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
4

Hàm mảng PHP tích hợp Array_sum cung cấp giải pháp vượt trội. Để tổng hợp các giá trị của $numbers, chúng ta chỉ cần làm

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
5

#thận trọng

Điều gì xảy ra nếu tham số mảng được cung cấp không chứa các giá trị số?

array_sum sẽ chỉ trả về 0 như hình bên dưới

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
6

Kết quả của việc chạy tập lệnh trên.

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
9

#array_filter

Khi cần lọc các phần tử của mảng thông thường chúng ta sẽ xử lý bằng các câu lệnh lặp

Ví dụ: để xóa tất cả sách chứa chuỗi "Thiết kế" khỏi mảng $books, chúng ta có thể thực hiện

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
7

Hàm mảng PHP tích hợp Array_filter cung cấp giải pháp với cú pháp tao nhã

Để hoàn thành nhiệm vụ tương tự với array_filter, chúng ta có thể làm

$booksNew = array_map[function [$item] {
    return ['name' => $item];
}, $books];
8

#lập trình chức năng

Hàm array_filter chấp nhận một bao đóng làm tham số thứ hai của nó và trả về một mảng mới. Điều này đôi khi được gọi là lập trình chức năng

Lập trình hàm là một mô hình lập trình mạnh mẽ. Và nó làm cho mã của chúng tôi dễ hiểu khi được sử dụng đúng cách

Các chức năng của mảng là gì?

Một số hành động mà mảng thực hiện bao gồm xóa phần tử, kiểm tra sự tồn tại của phần tử, đảo ngược tất cả phần tử trong mảng và sắp xếp phần tử.

3 loại mảng PHP là gì?

Trong PHP, có ba loại mảng. Mảng có chỉ số - Mảng có chỉ số là số . Mảng kết hợp - Mảng có khóa được đặt tên . Mảng nhiều chiều - Mảng chứa một hoặc nhiều mảng .

Hàm nào tạo mảng trong PHP?

Hàm array[] dùng để tạo mảng. Trong PHP, có ba loại mảng. Mảng có chỉ số - Mảng có chỉ số.

Hàm nào trả về một mảng trong PHP?

Hàm array_values[] trả về một mảng chứa tất cả các giá trị của một mảng. Mẹo. Mảng trả về sẽ có các phím số, bắt đầu từ 0 và tăng dần lên 1.

Chủ Đề