Ngôn ngữ lập trình

Ngôn ngữ lập trình rất quan trọng và rất đa dạng. Lập trình viên thường học một vài ngôn ngữ nhưng vẫn có riêng một ngôn ngữ thiết yếu để làm việc...

Mutiset (tập hợp) trong C++

Multiset giống như Set nhưng có thể chứa các khóa có giá trị giống nhau.

Đọc thêm về Set tại: https://yeulaptrinh.pw/938/set-trong-c/

Khai báo : giống như set.

Các hàm thành viên:

Capacity:

  • size : trả về kích thước hiện tại của multiset. ĐPT O(1)
  • empty : true nếu multiset rỗng, và ngược lại. ĐPT O(1).

Chỉnh sửa:

  • insert : Chèn phần tử vào set. ĐPT O(logN).
  • erase :
    • xóa theo iterator ĐPT O(logN)
    • xóa theo khóa: xóa tất cả các phần tử bằng khóa trong multiset. ĐPT: O(logN) + số phần tử bị xóa.
  • clear : xóa tất cả set. ĐPT O(n).
  • swap : đổi 2 set cho nhau. ĐPT O(n).

Operations:

  • find : trả về itarator trỏ đến phần tử cần tìm kiếm. Nếu không tìm thấy itarator trỏ về “end” của set. ĐPT O(logN). Dù trong multiset có nhiều phần tử bằng khóa thì nó cũng chỉ iterator đến một phần tử.
  • lower_bound : trả về iterator đến vị trí phần tử bé nhất mà không bé hơn (lớn hơn hoặc bằng) khóa (dĩ nhiên là theo phép so sánh), nếu không tìm thấy trả về vị trí “end” của set. ĐPT O(logN).
  • upper_bound: trả về iterator đến vị trí phần tử bé nhất mà lớn hơn khóa, nếu không tìm thấy trả về vị trí “end” của set.. ĐPT O(logN).
  • count : trả về số lần xuất hiện của khóa trong multiset. ĐPT O(logN) + số phần tử tìm được.

Chương trình Demo:

#include <iostream>

#include <set>

using namespace std;

main() {
    multiset <int> s;

    multiset <int> :: iterator it;

    int i;

    for (i=1;i<=5;i++) s.insert(i*10); // s={10,20,30,40,50}
    s.insert(30);    // s={10,20,30,30,40,50}
    cout << s.count(30) << endl;    // In ra 2
    cout << s.count(20) << endl;    // In ra 1
    s.erase(30);    // s={10,20,40,50}

    /* Duyet set */
    for (it=s.begin();it!=s.end();it++) {
    cout << *it <<  " ";
    }

    //In ra 10 20 40 50 
    cout << endl; system("pause");
}

Priority queue (hàng đợi ưu tiên) trong C++

Priority queue là một loại container adaptor, được thiết kế đặc biệt để phần tử ở đầu luôn luôn lớn nhất (theo một quy ước về độ ưu tiên nào đó) so với các phần tử khác.

Nó giống như một heap, mà ở đây là heap max, tức là phần tử có độ ưu tiên lớn nhất có thể được lấy ra và các phần tử khác được chèn vào bất kì.

Phép toán so sánh mặc định khi sử dụng priority queue là phép toán less (Xem thêm ở thư viện functional)

Để sử dụng priority queue một cách hiệu quả, các bạn nên học cách viết hàm so sánh để sử dụng cho linh hoạt cho từng bài toán.

Khai báo: #include <queue>

/*Dạng 1 (sử dụng phép toán mặc định là less)*/ 
priority_queue <int> pq;

/* Dạng 2 (sử dụng phép toán khác) */
priority_queue <int,vector<int>,greater<int> > q; //phép toán greater

Phép toán khác cũng có thể do người dùng tự định nghĩa. Ví dụ:

Cách khai báo ở dạng 1 tương đương với:

/* Dạng sử dụng class so sánh tự định nghĩa */ struct cmp{

bool operator() (int a,int b) {return a<b;}

};

main() {

…

priority_queue <int,vector<int>,cmp > q;

}

Các hàm thành viên:

  • size : trả về kích thước hiện tại của priority queue. ĐPT O(1)
  • empty : true nếu priority queue rỗng, và ngược lại. ĐPT O(1).
  • push : đẩy vào priority queue. ĐPT O(logN).
  • pop: loại bỏ phần tử ở đỉnh priority queue. ĐPT O(logN).
  • top : trả về phần tử ở đỉnh priority queue. ĐPT O(1).

Chương trình demo:

#include <iostream>
 
#include <queue>
 
#include <vector>
 
using namespace std;
 
main() {
 
    priority_queue <int> p;	// p={}
 
    p.push(1);	// p={1}
 
    p.push(5);	// p={1,5}
 
    cout << p.top() << endl; // In ra 5
 
    p.pop();	// p={1}
 
    cout << p.top() << endl; // In ra 1
 
    p.push(9);	// p={1,9}
 
    cout << p.top() << endl; // In ra 9
 
    system("pause");
 
}

Chương trình Demo 2:

#include <iostream>
 
#include <queue>
 
#include <vector>
 
using namespace std;
 
main() {
    priority_queue < int , vector <int> , greater <int> > p;	// p={}
    p.push(1);     //p={1}
    p.push(5);     //p={1,5}
    cout << p.top() << endl;    //In ra 1
    p.pop();       //p={5}
    cout << p.top() << endl;     //In ra 5
    p.push(9);    //p={5,9}
    cout << p.top() << endl; // In ra 5
    system("pause");
}

Chương trình Demo 3:

#include <iostream>
 
#include <queue>
 
#include <vector>
 
using namespace std;
 
struct cmp{
    bool operator() (int a,int b) {return a<b;}
};
 
main() {
    priority_queue < int , vector <int> , cmp > p;	// p={}
    p.push(1);    //p={1}
    p.push(5);    //p={1,5}
    cout << p.top() << endl;     //In ra 1
    p.pop();    //p={5}
    cout << p.top() << endl;     //In ra 5
    p.push(9);    //p={5,9}
    cout << p.top() << endl; // In ra 5
system("pause");
}

Queue (hàng đợi) trong C++

Queue là một loại cấu trúc dữ liệu và một loại container adaptor, được thiết kế để hoạt động theo kiểu FIFO (First – in first – out) (vào trước ra trước), tức là một kiểu danh sách mà việc bổ sung được thực hiển ở cuối danh sách và loại bỏ ở đầu danh sách.

Trong queue, có hai vị trí quan trọng là vị trí đầu danh sách (front), nơi phần tử được lấy ra, và vị trí cuối danh sách (back), nơi phần tử cuối cùng được thêm vào.

Khai báo: #include <queue>

Các hàm thành viên:

  • size : trả về kích thước hiện tại của queue. ĐPT O(1).
  • empty : true nếu queue rỗng, và ngược lại. ĐPT O(1).
  • push : đẩy vào cuối queue. ĐPT O(1).
  • pop: loại bỏ phần tử (ở đầu). ĐPT O(1).
  • front : trả về phần tử ở đầu. ĐPT O(1).
  • back: trả về phần tử ở cuối. ĐPT O(1).

Chương trình demo:

#include 

#include

using namespace std;

queue q;

int i;

main() {
for (i=1;i<=5;i++) q.push(i); // q={1,2,3,4,5} q.push(100); // q={1,2,3,4,5,100} cout << q.front() << endl; // In ra 1 q.pop(); // q={2,3,4,5,100} cout << q.back() << endl; // In ra 100 cout << q.empty() << endl; // In ra 0 cout << q.size() << endl; // In ra 5 system("pause"); }

Stack (ngăn xếp) trong C++

Stack là một loại container adaptor, được thiết kế để hoạt động theo kiểu LIFO (Last – in first – out) (vào sau ra trước), tức là một kiểu danh sách mà việc bổ sung và loại bỏ một phần tử được thực hiển ở cuối danh sách. Vị trí cuối cùng của stack gọi là đỉnh (top) của ngăn xếp.

 

Khai báo: #include <stack>

 

Các hàm thành viên:

  • size : trả về kích thước hiện tại của stack. ĐPT O(1).
  • empty : true stack nếu rỗng, và ngược lại. ĐPT O(1).
  • push : đẩy phần tử vào stack. ĐPT O(1).
  • pop : loại bỏ phẩn tử ở đỉnh của stack. ĐPT O(1).
  • top : truy cập tới phần tử ở đỉnh stack. ĐPT O(1).

Chương trình demo:

#include <iostream>

#include <stack>

using namespace std;

stack <int> s;

int i;

main() {

  for (i=1;i<=5;i++) s.push(i); // s={1,2,3,4,5} 
  s.push(100); // s={1,2,3,4,5,100} 
  cout << s.top() << endl; // In ra 100 
  s.pop(); // s={1,2,3,4,5} 
  cout << s.empty() << endl; // In ra 0 
  cout << s.size() << endl; // In ra 5 system("pause");

}

List (danh sách liên kết) trong C++

  • List được thực hiện như danh sách nối kép (doubly-linked list). Mỗi phần tử trong danh sách nối kép có liên kết đến một phần tử trước đó và một phần tử sau nó.
  • Do đó, list có các ưu điểm như sau:
    1. Chèn và loại bỏ phần tử ở bất cứ vị trí nào trong container. O(1).
  • Điểm yếu của list là khả năng truy cập tới phần tử thông qua vị trí. O(n).
  • Khai báo: #include <list>

Các hàm thành viên:

Capacity:

  • size : trả về số lượng phần tử của list. ĐPT O(1).
  • empty : trả về true(1) nếu list rỗng, ngược lại là false(0). ĐPT O(1).

 

Truy cập phần tử:

  • front: trả về giá trị phần tử đầu tiên. ĐPT O(1).
  • back: trả về giá trị phần tử cuối cùng. ĐPT O(1).

 

Chỉnh sửa:

  • push_back : thêm phần tử vào ở cuối list. ĐPT O(1).
  • push_front : thêm phần tử vào đầu list. ĐPT O(1).
  • pop_back : loại bỏ phần tử ở cuối list. ĐPT O(1).
  • pop_front : loại bỏ phần tử ở đầu list. ĐPT O(1).
  • insert (iterator,x): chèn “x” vào trước vị trí “iterator” ( x có thể là phần tử hay iterator của 1 đoạn phần tử…). ĐPT là số phần tử thêm vào.
  • erase : xóa phần tử ở vị trí iterator. ĐPT là số phần tử bị xóa đi.
  • swap : đổi 2 list cho nhau (ví dụ: first.swap(second);). ĐPT O(1).
  • clear: xóa list. ĐPT O(n).

 

Operations:

  • splice : di chuyển phần tử từ list này sang list khác. ĐPT O(n).
  • remove (const) : loại bỏ tất cả phần tử trong list bằng const. ĐPT O(n).
  • remove_if (function) : loại bỏ tất các phần tử trong list nếu hàm function return true . ĐPT O(n).
  • unique : loại bỏ các phần tử bị trùng lặp hoặc thỏa mãn hàm nào đó. ĐPT O(n). Lưu ý: Các phần tử trong list phải được sắp xếp.
  • sort : sắp xếp các phần tử của list. O(NlogN)
  • reverse : đảo ngược lại các phần tử của list. O(n).

Deque trong C++

Deque hay còn được gọi là hàng đợi hai đầu

  • Deque (thuờng được phát âm giống như “deck”) là từ viết tắt của double-ended queue (hàng đợi hai đầu).
  • Deque có các ưu điểm như:
  1. Các phần tử có thể truy cập thông cua chỉ số vị trí của nó. O(1)
  2. Chèn hoặc xóa phần tử ở cuối hoặc đầu của dãy. O(1)

Khai báo: #include <deque>

 

Capacity:

  • size : trả về số lượng phần tử của deque. ĐPT O(1).
  • empty : trả về true(1) nếu deque rỗng, ngược lại là false(0). ĐPT O(1).

Truy cập phần tử:

  • operator [] : trả về giá trị phần tử thứ []. ĐPT O(1).
  • at : tương tự như trên. ĐPT O(1).
  • front: trả về giá trị phần tử đầu tiên. ĐPT O(1).
  • back: trả về giá trị phần tử cuối cùng. ĐPT O(1).

 

Chỉnh sửa:

  • push_back : thêm phần tử vào ở cuối deque. ĐPT O(1).
  • push_front : thêm phần tử vào đầu deque. ĐPT O(1).
  • pop_back : loại bỏ phần tử ở cuối deque. ĐPT O(1).
  • pop_front : loại bỏ phần tử ở đầu deque. ĐPT O(1).
  • insert (iterator,x): chèn “x” vào trước vị trí “iterator” ( x có thể là phần tử hay iterator của 1 đoạn phần tử…). ĐPT O(n).
  • erase : xóa phần tử ở vị trí iterator. ĐPT O(n).
  • swap : đổi 2 deque cho nhau (ví dụ: first.swap(second);). ĐPT O(n). clear: xóa vector. ĐPT O(1).

Mảng (array) trong PHP

  1. Array là gì ?
  • Mảng là một biến đặc biệt và có thể lưu trữ nhiều giá trị.
  • Một biến thông thường chỉ chứa một giá trị duy nhất, nếu chúng ta muốn chứa nhiều giá trị trong một biến thì biến đó phải là một mảng (ví dụng cần lưu trữ thông tin của 1000 nhân viên).
  • Trong PHP có 3 loại mảng: mảng số nguyên, mảng kết hợp và mảng đa chiều.
  1. Khai báo và sử dụng mảng số nguyên
  • Mảng số nguyên là mảng mà các chỉ số của các phần tử phải thuộc kiểu số nguyên (mảng số nguyên còn được gọi là mảng liên tục)
  • Tìm hiểu cách truy cập các phần tử của mảng và in mảng.
  1. Khai báo và sử dụng mảng kết hợp:
  • Mảng kết hợp là các chỉ số của các phần tử có thể là chuỗi hoặc số (Mảng kết hợp còn gọi là không liên tục)
  • In danh sách các phần tử trong mảng kết hợp: foreach
  1. Khai báo và sử dụng mảng đa chiều
  • Mảng đa chiều là mảng mà mỗi phần tử trong mảng chính có thể là một mảng và mỗi phần tử trong mảng con lại cũng có thể là một mảng (mảng đa chiều còn gọi là mảng lồng)
  • In phần tử, in sách các phần tử trong mảng đa chiều: foreach
  1. Lấy danh sách các khóa và danh sách các giá trị của một mảng nào đó ?
  • array_value ($array) trả về một mảng liên túc có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $array.
  • array_keys ($array): trả về một mảng liên tục có các phần tử có giá trị là khóa lấy các phần tử của mảng $array.
  1. Loại bỏ phần tử ở đầu và cuối mảng
  • array_pop ($array) loại bỏ phần tử cuối cùng của mảng. Hàm trả về phần tử cuối cùng đã được loại bỏ.
  • array_shift ($array) loại bỏ phần tử đầu tiên của mảng. Hàm trả về phần tử đầu tiên đã được loại bỏ.
  1. Loại bỏ phần tử trùng nhau trong mảng
  • array_unique ($array) loại bỏ những phần tử trùng nhau trong mảng và trả về mảng mới.
  1. Xóa phần tử ở vị trí bất kì của mảng
  • Sử dụng hàm unset để xóa bỏ phần tử ở vị trí bất kỳ trong mảng.
  1. Thêm một hoặc nhiều phần tử ở đầu hoặc cuối mảng ?
  • array_push ($array, $val1, $val2, … , $valn) thêm một hoặc nhiều phần từ vào cuối mảng $array. Hàm trả về kiểu nguyên là số lượng của mảng $array mới.
  • array_unshift ($array, $val1, $val2, … , $valn) thêm một hoặc nhiều phần tử vào đầu mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới.
  1. Đảo ngược vị trí các phần tử của mảng
  • array_reverse ($array) đảo ngược vị trí các phần tử của mảng, phần tử cuối trở thành phần tử đầu tiên, phần tử ké cuối trở thành phần tử thứ nhì, … kết quả trả về là một mảng mới.
  1. Hoán đổi chỉ số và giá trị của mảng (đảo $key và $value)
  • Sử dụng hàm array_flip ($array) trả về một mảng có khóa và giá trị được hoán đổi cho nhau so với mảng $array (giá trị thành khóa và khóa thành giá trị)
  1. Xác định tổng, giá tri lớn nhất và giá trị nhỏ nhất trong mảng
  • Tính tổng các phần tử trong mảng array_sum ($array)
  • Xác định phần tử nhỏ nhất trong mảng min($array)
  • Xác định phần tử lớn nhất trong mảng max($array)
  1. Thống kê số lần xuất hiện của các phần tử trong mảng
  • Để thống kê sự xuất hiện của các phần tử trong mảng chúng ta sử dụng hàm array_count_values ($array)
  1. Kết hợp các mảng lại với nhau
  • array_merge ($array1, $array2, … , $arrayn) nhạp 2 hay nhiều mảng thành một mảng duy nhất và trả về mảng mới.
  1. Lấy ngẫu nhiên chỉ số ($key) của một mảng nào đó
  • array_rand ($array, $number) lấy ngẫu nhiên $number phần tử mảng $array và đưa vào mảng mới (láy giá trị khóa).
  1. Tìm kiếm phần tử trong mảng
  • array_search ($value, $array) tìm phần tử mang giá trị $value trong mảng $array. Trả về khóa của phần tử tìm được.
  1. Kiểm tra một $key hoặc $value nào đó có tồn tại trong mảng hay không ?
  • array_key_exists ($key, $array) kiểm tra khóa $key có tồn tại trong mảng $array hay không ? Nếu có trả về giá trị true.
  • in_array ($value, $array) kiểm tra giá trị $value có tồn tại trong mảng $array hay không ? Nếu có trả về giá trị true.
  1. Chuyển đổi các key trong mảng thành chữ hoa hoặc chữ thường
  • Sử dụng hàm array_change_key_case ($array, case) để chuyển đổi các chỉ số ($key) trong mảng thành chữ hoa hoặc chữ thường, tuy thuộc vào tham số case truyền vào. Kết quả trả về của hàm sẽ là một mảng mới.
  1. Chuyển đổi qua lại giữa mảng và chuỗi
  • implode ($str, $array) chuyển các giá trị của mảng $array thành một chuỗi bao gồm các phần tử các nhau bởi ký tự $str
  • explode ($delimiter, $str) chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào $delimiter, mỗi đoạn tách ra sẽ thành một phần tử của mảng mới.
  1. Truy xuất phần tử của mảng với end, current, next và previous.
  • current($array) truy xuất phần tử hiện tại của mảng.
  • end($array) truy xuất phần tử cuối cùng của mảng.
  • next($array) truy xuất phần tử sau phần từ của mảng.
  • prev($array) truy xuất phần tử trước phần tử hiện tại của mảng.
  • reset() quay về vị trí phần tử đầu tiên trong mảng.
  1. Chuyển đổi mảng về một chuỗi đặc biệt và ngược lại
  • serialize ($value) chuyển chuỗi/mảng/đối tượng $value thành một chuỗi đặc biệt để lưu vào cơ sở dữ liệu.
  • unserialize($value) chuyển chuỗi đặc biệt được tạo từ serialize($value) về trạng thái ban đầu.
  1. Xáo trộn thứ tự các phần tử trong mảng
  • Sử dụng hàm shuffle để tạo ra mảng mới (mảng liên tục) với thứ tự các phần tử trong mảng bị thay đổi.
  1. Tạo mảng từ các biến có sẵn
  • Sử dụng hàm compact() để tạo ra mảng từ các biến có sẵn.
  1. Tạo mảng sử dụng hàm range()
  • Sử dụng hàm range để tạo ra các phần tử của mảng.
  1. Tạo mảng bằng cách sử dụng hàm array_combine
  • Sử dụng hàm array_combine($key, $value) để tạo một mảng mới có khóa được lấy từ mảng $key và giá trị được lấy từ mảng $value theo tuần tự.
  1. Các trường hợp so sánh giữa hai mảng
  • Trường hợp 1: So sánh khác nhau:
    • array_diff ($array1, $array2) trả về một mảng bao gồm các phần tử có giá trị tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
    • array_diff_key ($array1, $array2) trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
    • array_diff_assoc ($array1, $array2) tả về một mảng bao gồm các phần tử có khóa và giá trị tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
  • Trường hợp 2: So sánh giống nhau:
    • array_intersect ($array1, $array2) trả về một mảng bao gồm các phần tử giống nhau về giá trị 2 mảng $array1 và $array2
    • array_intersect_key ($array1, $array2) trả về một mảng bao gồm các phần tử giống nhau về khóa giữa 2 mảng $array1 và $array2
    • array_intersect_assco ($array1, $array2) trả về một mảng bao gồm các phần tử giống nhau về khóa và giá trị giữa 2 mảng $array1 và $array2
  1. Xử lý giá trị các phần tử của mảng
  • Hàm array_walk sẽ gửi các giá trị của mảng đến một hàm nào đó để xử lý và nhận kết quả về là một mảng mới.
  1. Tìm hiểu hàm array_map
  • Hàm array_map sẽ gửi các giá trị của một hay nhiều mảng đến hàm nào đó đẻ xử lý và nhận kết quả trả về là một mảng mới.
  1. Trích xuất một đoạn phần tử của mảng
  • Hàm array_slice (array, offset, length, preserve) trích xuất lấy một đoạn phần tử của mảng từ vị trí bắt đầu offset (vị trí bắt đầu trong mảng là 0) và lấy length phần từ.
  1. Thay thế một đoạn phần tử của mảng
  • Hàm array_splice (array1, offset, length, array2) xóa bỏ một đoạn phần tử của mảng array1 từ vị trí offset và lấy length phần tử. Sau đó thay thế các phần tử bị loại bỏ bằng mảng array2
  1. Các trường hợp sắp xếp mảng
  • Sắp xếp theo giá trị:
    • sort(array) sắp xếp các phần tử trong mảng array tăng dần theo giá trị.
    • rsort(array) sắp xếp các phần tự trong mảng array giảm dần theo giá trị.
  • Sắp xếp theo khóa
    • ksort(array) sắp xếp các phần tử trong mảng array tăng dần theo khóa.
    • krsort(array) sắp xếp các phần tử trong mảng array giảm dần theo khóa.

Thao tác nâng cao trên mảng

 

  • Mảng là một biến đặc biệt và có thể lưu trữ nhiều giá trị (còn biến thì không). Trong PHP có 3 loại mảng: mảng số nguyên, mảng kết hợp và mảng đa chiều.
Mảng số nguyên Mảng kết hợp Mảng đa chiều
Tên gọi khác Mảng liên tục Mảng không liên tục Mảng lồng
Đặc điểm Chỉ số của mảng là số Chỉ số của mảng là chuỗi hoặc số Mỗi phần tử trong mảng chính là có thể là một mảng và mỗi phần tử trong mảng con cũng có thể là một mảng
In mảng Câu lệnh for Câu lệnh foreach

 

  1. Các hàm sử lý mảng:
STT Hàm Chức năng
1 print_r ($array) Xem cấu trúc mảng
2 count ($array) Trả về giá trị kiểu số nguyên là phần tử của mảng, hay là đếm số phần tử trong mảng. Có thể sử dụng hàm sizeof ($array)
3 array_values ($array) Trả về một mảng liên tục có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $array
4 array_keys ($array) Trả về một mảng liên tục có các phần tử có giá trị là khóa lấy từ các phần tử của mảng $array
5 array_pop ($array) Loại bỏ phần tử cuối của mảng. Hàm trả về phần tử cuối đã được loại bỏ.
6 array_shift ($array) Loại bỏ phần tử đầu tiên của mảng. Hàm trả về phần tử đầu tiên đã được loại bỏ.
7 array_unique ($array) Loại bỏ những phần tử trùng nhau trong mảng và trả về mảng mới
8 unset () Xóa phần tử ở vị trí bất kì của mảng
9 array_push ($array, $val1, $val2, … , $valn) Thêm một hoặc nhiều phần tử vào cuối mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới
10 array_unshift ($array, $val1, $val2, … , $valn) Thêm một hoặc nhiều phần tử vào đầu mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới
11 array_reverse ($array) Đảo ngược vị trị các phần tử của mảng, phần tử cuối trở thành phần tử đầu tiên, phần tử kế cuối trở thành phần tử thứ nhì, … kết quả trả về là một mảng mới.
12 array_flip ($array) Trả về một mảng có khóa và giá trị được hoán đổi cho nhau so với $array (giá trị thành khóa và khóa thành giá trị)
13 array_sum ($array) Tính tổng các phần tử trong mảng
14 min ($array) Xác định phần tử nhỏ nhất trong mảng.
15 max ($array) Xác định phần tử lớn nhất trong mảng.
16 array_count_values ($array) Thống kê số lần xuất hiện của các phần tử trong mảng.
17 array_merge ($array1, $array2, … , $arrayn) Nhập 2 hay nhiều mảng thành một mảng duy nhất và trả về mảng mới
18 array_rand ($array, $number) Lấy ngẫu nhiên $number phần tử mảng $array và đưa vào mảng mới (lấy giá trị khóa)
19 array_search ($value, $array) Tìm phần tử mang giá trị $value trong mảng $array. Trả về khóa của phần tử tìm được
20 array_key_exists ($key, $array) Kiểm tra khóa $key có tồn tại trong mảng $array hay không ? Nếu có trả về giá trị true
21 in_array ($value, $array) Kiểm tra giá trị $value có tồn tại trong mảng $array hay không ? Nếu có trả về true
22 array_slice ($array, $begin, $finish) Trích lấy một đoạn phần tử của mảng $array từ vị trí $begin đến vị trí $finish. Phần tử đầu tiên (chỉ số 0), phần tử cuối cùng (chỉ số -1 hay count($array)-1)
23 array_change_key_case ($array, case) Chuyển đổi các key trong mảng thành chữ hoa hoặc chữ thường
24 implode ($str, $array) Chuyển đổi giá trị của mảng $array thành một chuỗi bao gồm các phần tử cách nhau bởi ký tựu $str
25 explode ($delimiter, $str) Chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào $delimiter, mỗi đoạn tách ra sẽ thành một phần tử của mảng mới.
26 current($array) Truy xuất phần tử hiện tại của mảng
27 end($array) Truy xuất phần tử cuối cùng của mảng
28 next($array) Truy xuất phần  tử sau phần tử hiện tại của mảng
29 prev($array) Truy xuất phần tử trước phần tử hiên tại của mảng
30 reset() Quay về vị trí phần tử đầu tiên trong mảng
31 serialize ($value) Chuyển chuỗi/mảng/đối tượng $value thành một chuỗi đặc biệt để lưu vào cơ sở dữ liệu
32 unerialize ($value) Chuyển chuỗi đặc biệt về trạng thái ban đầu
33 shuffle ($array) Tạo ra mảng mới (mảng liên tục) với thứ tự các phần tử trong mảng bị thay đổi
34 compact() Tạo ra mảng mới từ các biến có sẵn
35 range() Sử dụng hàm range để tạo ra các phần tử của mảng
36 array_combine ($key, $values) Tạo một mảng mới có khóa được lấy từ mảng $keys và giá trị được lấy từ mảng $value theo tuần tự (yêu cầu số phần tử ở 2 mảng phải bằng nhau)
37 array_diff ($array1, $array2) Trả về một mảng bao gồm các phần tử có giá trị tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
38 array_diff_key ($array1, $array2) Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
39 array_diff_assoc ($array1, $array2) Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
40 array_intersect ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về giá trị giữa 2 mảng $array1 và $array2
41 array_intersect_key ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về khóa giữa 2 mảng $array1 và $array2
42 array_intersect_assoc ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về khóa và giá trị giữa 2 mảng $array1 và $array2
43 array_walk() Gửi các giá trị của mảng đến một hàm nào đó để xử lý và nhận kết quả trả về là một mảng mới
44 array_map() Gửi các giá trị của một hay nhiều mảng đến một hàm nào đó để xử lý và nhận kết quả trả về là một mảng mới
45 array_stice (array, offset, length, preserve) Trích xuất lấy một đoạn phần tử của mảng từ vị trí bắt đầu offset (vị trí bắt đầu của mảng là 0) và lấy length phần tử
46 array_splice (array1, offset, length, array2) Xóa bỏ một đoạn phần tử của mảng array1 từ vị trị bắt đầu và lấy length phần tử. Sau đó thay thế các phần tử bị loại bở bằng mảng array2
47 aort(array) Sắp xếp các phần tử trong mảng array tăng dền theo giá trị
48 rsort(array) Sắp xếp các phần tử trong mảng array giảm dền theo giá trị
49 ksort(array) Sắp xếp các phần tử trong mảng array tăng dền theo khóa
50 krsort(array) Sắp xếp các phần tử trong mảng array giảm dền theo khóa