PHP là một ngôn ngữ lập trình phổ biến với nhiều tính năng mạnh mẽ, nhưng đôi khi có những logic khó đoán và dễ gây nhầm lẫn. Trong bài viết này, chúng ta sẽ cùng khám phá một số câu hỏi phỏng vấn PHP phức tạp và giải thích chi tiết.
1. Kết quả của đoạn code sau là gì?
$array = [1 => "a", "1" => "b", 1.5 => "c", true => "d"];
echo $array[1];Trả lời:
d
Giải thích:
- PHP chuyển đổi các key về integer nếu chúng là số.
- Key
1.5bị chuyển thành1. truecũng bị chuyển thành1, nên ghi đè giá trị trước đó.
2. Kết quả của đoạn code này là gì?
$x = true and false;
var_dump($x);Trả lời:
bool(true)
Giải thích:
- Toán tử
andcó độ ưu tiên thấp hơn=. x = trueđược gán trước, sau đóand falsekhông ảnh hưởng.
3. Kết quả của đoạn code này là gì?
$array = array(1, 2, 3, 4, 5);
$array = array_map(function($value) {
return $value * 2;
}, $array);
echo implode(", ", $array);Trả lời:
2, 4, 6, 8, 10
Giải thích:
array_mapnhân từng phần tử trong mảng với 2.
4. Kết quả của đoạn code sau là gì?
$number = 3;
echo $number;
echo $number++ + $number++;
echo $number;
echo $number-- - $number--;
echo $number;Trả lời:
37513
Giải thích:
- Toán tử hậu tố
++và--trả về giá trị trước khi tăng/giảm.
5. Kết quả của đoạn code sau là gì?
$array = [1, 2, 3, 4, 5];
unset($array[2]);
$result = array_values($array);
echo implode(", ", $result);Trả lời:
1, 2, 4, 5
Giải thích:
unset($array[2])xóa phần tử nhưng không cập nhật index.array_valuestạo mảng mới với index liên tiếp.
6. Kết quả của đoạn code sau là gì?
$person = 'John ';
$person[10] = 'Smith';
echo $person;Trả lời:
John SGiải thích:
- PHP mở rộng chuỗi để chứa phần tử thứ 10 và điền khoảng trắng.
7. Kết quả của đoạn code sau là gì?
$array = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];
unset($array['b']);
$result = array_keys($array);
echo implode(", ", $result);Trả lời:
a, c
Giải thích:
unset($array['b'])xóa key 'b' mà không thay đổi các key khác.
8. Kết quả của đoạn code sau là gì?
$array = [1, 2, 3, 4, 5];
foreach ($array as &$value) {
$value *= 2;
}
unset($value);
$result = array_map(function($v) { return $v - 1; }, $array);
echo implode(", ", $result);Trả lời:
1, 3, 5, 7, 9
Giải thích:
- Biến
$valuelà tham chiếu đến phần tử của mảng. - Nếu không
unset($value), biến này có thể ảnh hưởng đến giá trị tiếp theo ngoài vòng lặp. array_maptrừ mỗi phần tử đi 1.
9. Kết quả của đoạn code sau là gì?
$count = 7;
while (--$count > 0) {
$count++;
echo $count;
echo "hello";
}Trả lời:
Vòng lặp vô hạn.
Giải thích:
--$countgiảm$counttrước khi kiểm tra điều kiện.count++tăng lại giá trị$count, khiến$countkhông bao giờ xuống 0.- Dẫn đến vòng lặp chạy vô hạn.
Kết Luận
Những câu hỏi trên minh hoạ và giải thích những trường hợp thú vị trong PHP. Việc hiểu rõ những trường hợp này sẽ giúp bạn tránh những lỗi sai và viết code tốt hơn!








