PHP đảo ngược các từ trong chuỗi không sử dụng hàm có sẵn

Có cách nào mà không cần phải sử dụng hàm có sẵn trong PHP để có thể đảo ngược thứ tự các từ của một chuỗi cho trước không vậy mọi người?

Ví dụ như chuỗi đầu vào là

Hello World!

Thì chuỗi đầu ra sẽ là

World! Hello
PHP
Được hỏi 1 năm trước
Bình chọn bởi: Tân Lê, Huyền SuBy, Lê Trung, Vũ Nhật Linh, Lê Hạnh, Lê Anh, Thuy Linh, Hoàng Giang, Phuong Jenny, Đồng Tuyết, Trần Diễm, Ngô Thanh Hải, Phạm Vũ, Uni Moon, Đức Tuấn, Khánh Duy, Trần Anh, Lê Huyền Trang, Nguyen Duy, Huyền Cool, Hải Phạm, Huy Pro, Kim Hani, Hữu Hạnh, Đinh Quang Huy

Điểm mấu chốt ở đây là một chuỗi của PHP được coi như một mảng với mỗi ký tự là một phần tử được đánh khoá bắt đầu từ 0.

Do đó để đảo ngược các từ trong một chuỗi cho trước chỉ cần thực hiện các ước sau:

  • Đầu tiên sử dụng vòng lặp while để lặp qua các ký tự của chuỗi này.
  • Với chuỗi không phải là ký tự trắng trong mỗi vòng lặp thêm vào biến $tmp cho trước. Biến $tmp dùng để lưu trữ tạm thời mỗi từ xuất hiện trong chuỗi.
  • Khi ký tự trắng xuất hiện trong vòng lặp thì có nghĩa là đã kết thúc một từ. Lúc này đặt biến $tmp vào phía trước biến $output. Biến $output là kết quả cuối cùng sau khi đảo ngược các từ trong chuỗi.

Đoạn mã lệnh đầy đủ sẽ như sau:

<?php
// chuỗi đầu vào 
$input = "Hello World!";
$i = 0;
$temp = $output = ""; 
// lặp qua các ký tự của chuỗi
while ($char = @$input[$i++])
{
    if ($char == " "){ 
                // nếu là ký tự trắng
        $out = " ".$temp.$output;
        $temp = ""; 
    } else {
        $temp .= $char;
    }   
}
echo $temp.$output;

Ở trên sử dụng ký tự @ của PHP để tránh lỗi cảnh báo:

PHP Notice:  Uninitialized string offset: ...

Lỗi trên xuất hiện khi giá trị của biến $i lớn hơn số các ký tự của chuỗi $input.

Trả lời 2 ngày trước

Thêm Trả Lời