Hướng dẫn string to array php

Home » Code

Vì sao cần convert string to array PHP – có nhiều trường hợp khi một mảng được coi là phù hợp hơn một chuỗi.
Ví dụ: bạn có thể chuyển đổi mật khẩu được nhập làm đầu vào trong ứng dụng web thành một mảng trước khi lưu trữ chúng trong cơ sở dữ liệu. Điều này cung cấp bảo mật hơn và dễ dàng truy cập vào dữ liệu. Mảng có thể giúp bạn triển khai tổ chức dữ liệu tốt hơn và hoạt động nhanh hơn. Khi bạn chuyển đổi một chuỗi thành một mảng, nó giúp cho việc thao tác dữ liệu trở nên thuận tiện. Là một ngôn ngữ kịch bản mạnh mẽ, PHP cung cấp nhiều phương thức tích hợp sẵn khác nhau để chuyển đổi một chuỗi thành một mảng.

Cách 1: Sử dụng str_split()
Đây là một phương thức PHP có sẵn được sử dụng để chuyển đổi một chuỗi thành một mảng bằng cách chia chuỗi thành các chuỗi con nhỏ hơn có độ dài đồng nhất và lưu trữ chúng trong một mảng. Nó không sử dụng bất kỳ loại dấu phân tách nào, nó chỉ tách chuỗi.
Cú pháp: str_split($initial_string, $splitting_length)
Trong đó:
$initial_string (bắt buộc): Tham số đầu tiên bạn truyền cho hàm này là chuỗi phải được chuyển đổi thành một mảng.
$splitting_length (tùy chọn): Tham số thứ hai là một số nguyên biểu thị thời gian của các phần của chuỗi sau khi tách. Nó là một tham số tùy chọn. Nếu không được thông qua, hàm sẽ coi độ dài này là 1 theo mặc định.
Hàm này trả về một mảng có chứa các phần của chuỗi ban đầu. Nếu độ dài được truyền cho hàm vượt quá độ dài của chuỗi ban đầu, hàm sẽ trả về toàn bộ chuỗi dưới dạng một phần tử, trong khi nếu số nguyên độ dài nhỏ hơn một, hàm sẽ trả về false.
Ví dụ:

// Output
Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => F
    [7] => r
    [8] => i
    [9] => e
    [10] => n
    [11] => d
)

Array
(
    [0] => Hel
    [1] => lo
    [2] => Fri
    [3] => end
)

Cách 2: Sử dụng explode()
Hàm explode() là một phương thức khác của PHP được sử dụng để chuyển đổi một chuỗi thành một mảng. Không giống như hàm str_split(), hàm này sử dụng dấu phân tách hoặc dấu phân tách cần được chuyển làm đối số cho hàm. Dấu phân cách này có thể là dấu phẩy (,), dấu chấm (.) Hoặc bất cứ thứ gì. Sau khi tách chuỗi thành các chuỗi con nhỏ hơn, hàm này lưu trữ chúng trong một mảng và trả về mảng.
Cú pháp: explode($separator, $initial_string, $no_of_elements)
Trong đó:
$separator: Dấu phân tách là một ký tự lệnh cho hàm explode() để tách chuỗi bất cứ khi nào nó phát hiện dấu phân cách và lưu trữ chuỗi con đó trong mảng.
$initial_name: Tham số thứ hai được truyền cho hàm này là chuỗi phải được chuyển đổi thành một mảng.
$no_of_elements (tùy chọn): Đây là tham số cuối cùng và là tham số tùy chọn được chuyển cho hàm này. Tham số này đại diện cho số lượng chuỗi mà nó sẽ chia chuỗi ban đầu. Số này có thể là số dương, số âm hoặc số không.
Hàm explode() trả về một mảng có chứa các đoạn chuỗi làm phần tử của nó.
Ví dụ:

$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));

//Output: 
Array ( [0] => Hello [1] => world. [2] => It's [3] => a [4] => beautiful [5] => day. )

 
Ngoài ra, có thể sử dụng str_word_count(), preg_split(), json_decode(),… để thực hiện convert string to array PHP. (Xem thêm)

QABug chúc các bạn thực hiện convert string to array PHP thành công.

Ví dụ dưới dây hướng dẫn bạn các cách Convert Strong to Array trong PHP đơn giản

Cách 1 - Convert String to Array bằng SPLIT 

// (A) cho một chuỗi  
$thestring = "FOOBAR";
 
// (B) Cắt các ký tự thành phẩn tử của array
$thearray = str_split($thestring);
print_r($thearray); // F, O, O, B, A, R
 
// (C) Set số ký tự tạo thành array
$thearray = str_split($thestring, 3);
print_r($thearray); // FOO, BAR

Cách 2 - Convert String to Array bằng EXPLODE 

// (A) THE STRING
$thestring = "FOO-BAR";
 
// (B) Convert thành array bằng 1 ký tự '-'
$thearray = explode("-", $thestring);
print_r($thearray); // FOO, BAR

Cách 3 - Convert String to Array bằng PREG SPLIT

// (A) THE STRING
$thestring = "FOO BAR, HELLO WORLD";
 
// (B) SPLIT BY PATTERN
$thearray = preg_split("/(\s|,\s)/", $thestring);
print_r($thearray); // ["FOO", "BAR", "HELLO", "WORLD"]

Trên ví dụ trên ta dùng preg_split() function , điểm đặc biệt là function này dùng 1 tham số để cắt chuỗi thành array là một regular expression ( ở đây là  /(\s|,\s)/ ).

Regular expression còn gọi là Regex là những kỹ thuật viết biểu thức để tìm kiếm chuỗi trùng phù hợp

Cách sử dụng này khá mạnh mẽ bởi có sự xuất hiện của Regex, tuy nhiên nó hơi khó với người chưa biết về Regex.

Cách 4 - Convert String to Array bằng STRING WORD COUNT

// (A) THE STRING
$thestring = "Foo Bar, hello world. Goodbye world3 = John@Doe.";
 
// (B) STR_WORD_COUNT(STRING, FORMAT, LIST)
// (B1) FORMAT là 0 - Trả số lượng từ hợp lệ
echo str_word_count($thestring, 0); // 8
 
// (B2) FORMAT là 1 - Trả về các từ hợp lệ 
$thearray = str_word_count($thestring, 1);
print_r($thearray); // Foo, Bar, hello, world, Goodbye, world, John, Doe
 
// (B3) FORMAT là  2 - Trả về các từ có giá trị kèm vị trí bắt đầu của ký tự đó.
$thearray = str_word_count($thestring, 2);
print_r($thearray); 
/* 0 - Foo,
 * 4 - Bar,
 * 9 - hello,
 * 15 - world,
 * 22 - Goodbye,
 * 30 - world,
 * 39 - John,
 * 44 - Doe
 */

// (C) LIST - Các ký tự được xác đinh là tiếng anh
$thearray = str_word_count($thestring, 2, "3@");
print_r($thearray); 
/* 0 - Foo,
 * 4 - Bar,
 * 9 - hello,
 * 15 - world,
 * 22 - Goodbye,
 * 30 - world3,
 * 39 - John@Doe
 */

str_word_count () có thể không phải là một hàm được sử dụng để chuyển đổi một chuỗi thành một mảng, nhưng nó vẫn có thể làm được điều này.

Hơi khó hiểu, nhưng str_word_count (STRING, MODE, LIST) có 3 tham số.

+ Tham số đầu tiên là chính STRING.

+ Tham số thứ hai là tham số quan trọng "thay đổi" CHẾ ĐỘ của hàm.

  • 0 sẽ chỉ đơn giản là đếm tổng số từ tiếng Anh hợp lệ trong chuỗi. Không phải những gì chúng tôi đang tìm kiếm.
  • 1 sẽ trả về một mảng các từ hợp lệ trong chuỗi - Có, điều này rất hữu ích nếu bạn muốn lọc ra tất cả các từ vô nghĩa trong một chuỗi.
  • 2 làm tương tự như 1. Nhưng chỉ số của mảng sẽ tương ứng với vị trí bắt đầu của từ trong chuỗi.

+ Cuối cùng, tham số LIST cuối cùng là tùy chọn - Chúng ta có thể sử dụng tham số này để ghi đè và yêu cầu PHP chấp nhận danh sách các ký tự này là “từ tiếng Anh hợp lệ”.

Cách 5 - Convert String to Array bằng For Loop

// (A) THE STRING
$thestring = "FOO-BAR";
 
// (B) MANUAL LOOP & SPLIT
$thearray = [];
for ($i=0; $i

Cuối cùng, đây là một giải pháp thay thế "thủ công" - Chúng tôi chỉ sử dụng một vòng lặp for để chạy qua các ký tự của một chuỗi.

Các ký tự của một chuỗi hoạt động giống như một mảng và chúng tôi có thể truy cập chúng qua STRING [N].

Mặc dù điều này có vẻ khá phức tạp, nhưng phần tốt là - Chúng tôi có thể thực hiện tất cả các loại quy tắc và xử lý “đặc biệt” với cách này.