1 Câu Trả Lời

Nguyễn Đạt Nguyễn Đạt

Đ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.

Nội dung tối thiểu 100 ký tự

Câu Hỏi Liên Quan