Hướng dẫn fix lỗi "Invalid numeric literal" trong PHP

Hiện tượng lỗi

  • Code (file) PHP không chạy
  • Request trả về Response 500 (Server Error) (Trong API)
  • PHP Parser hiển thị error log: Invalid numeric literal in ....php on line ...

Parse error: Invalid numeric literal | Error log | PHP

Nguyên nhân

Nguyên nhân cốt lõi

PHP Parser không thể phân biệt dữ liệu thuộc kiểu số (number) hay chữ (string), xuất phát từ cách viết dữ liệu của coder.

Nguyên nhân cụ thể
  • Coder dùng các ký tự số liên tiếp không được đặt trong cặp dấu nháy, bắt đầu bằng 0 trong một biểu thức so sánh. Ví dụ:
    $check = $input == 012345; // Invalid numeric literal
    $check = $input == "012345"; // Như vầy mới đúng

  • Coder dùng các ký tự số liên tiếp không được đặt trong cặp dấu nháy, bắt đầu bằng 0 trong một mảng (array). Ví dụ:
    $array = [12, 34, 01, 0898244]; // Invalid numeric literal
    $array = [12, 34, "01", "0898244"]; // Như vầy mới đúng

Hãy luôn nhớ rằng, bản thân một chuỗi các ký tự số liên tiếp bắt đầu bằng 0 không thể xếp vào kiểu dữ liệu number, thay vào đó, nó được xếp vào kiểu dữ liệu string. Do đó, chuỗi ký tự này phải luôn được đặt trong cặp dấu nháy thì mới đúng cú pháp.

Ví dụ:

$a = "02";
$phone_number = "0908723123";
$key = "02345678";

Cách khắc phục (fix)

Bước 1. Xác định vị trí câu lệnh chứa lỗi

Bạn có thể xác định vị trí câu lệnh PHP chứa lỗi thông qua dòng Error log mà bạn nhận được khi chạy code. Ví dụ:

Parse error: Invalid numeric literal in /opt/lampp/htdocs/php-can-ban/test-php-env.php on line 5
→ Câu lệnh chứa lỗi nằm ở dòng số 5 của file test-php-env.php

Note: Trong trường hợp trình duyệt web không hiển thị lỗi, bạn cấu hình lại file php.ini, thay giá trị display_errors = Off → display_errors = On. Sau khi fix lỗi xong, bạn trả lại giá trị Off ban đầu để đảm bảo an toàn về bảo mật.

Bước 2. Bổ sung cặp dấu nháy

Sau khi xác định vị trí câu lệnh chứa lỗi, bạn chỉ cần bổ sung cặp dấu nháy (nháy đơn hoặc nháy đôi) cho các chuỗi ký tự số bắt đầu bằng 0 (như đã phân tích ở phần nguyên nhân).

Bước 3. Lưu code và chạy lại

Đăng ký để nhận được thông báo mỗi khi có bài viết mới!