Skip to main content

[Thủ Thuật PHP] Convert String to Array trong PHP

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<strlen($thestring); $i++) {
  // YOUR CUSTOM RULES + PROCESSING
  if ($thestring[$i] != "-") { $thearray[] = $thestring[$i]; }
}
print_r($thearray); // F, O, O, B, A, R

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.