Một hàm php có thể có bao nhiêu đối số?

PHP có nhiều hàm dựng sẵn có thể sử dụng. Nó cũng cho phép các nhà phát triển viết các chức năng tùy chỉnh của riêng họ

Hãy xem một ví dụ về hàm do người dùng định nghĩa

chức năng ví dụ


Định nghĩa một hàm

  • Bắt đầu bằng "hàm", sau đó là dấu cách, sau đó là tên hàm
  • Theo sau là các đối số được phân cách bằng dấu phẩy trong ngoặc đơn
    • Có thể là không, một hoặc nhiều đối số
    • Đối số là các biến và bắt đầu bằng "$"
  • Tiếp theo là dấu ngoặc nhọn xung quanh định nghĩa hàm
  • Định nghĩa hàm là mã cho tác vụ tùy chỉnh
  • Sau đó trả về kết quả bằng cách sử dụng "return"

Gọi một chức năng

  • Gọi tên hàm, sau đó gọi các giá trị trong ngoặc đơn
  • Các giá trị sẽ được gán cho các biến đối số
  • Thứ tự của các giá trị phải khớp với thứ tự của các đối số
  • Mỗi đối số phải nhận một giá trị, trừ khi một giá trị mặc định được đặt

Quy tắc đặt tên hàm

Có một vài quy tắc về ký tự nào được phép trong tên hàm

  • Chữ hoa/chữ thường
  • số
  • dấu gạch dưới
  • Không có khoảng trắng

Khi định nghĩa hoặc gọi hàm, tên hàm luôn cần có dấu ngoặc đơn. Đây là cách PHP nhận ra nó như một chức năng. Điều này đúng ngay cả khi không có đối số bên trong dấu ngoặc đơn

Thí dụ


Quy tắc định nghĩa hàm

PHP chỉ cho phép định nghĩa hàm một lần. Xác định lại nó sẽ gây ra lỗi. Khi sử dụng include() hoặc require() để nhập tệp có chứa hàm, bạn nên sử dụng include_once() hoặc require_once() để đảm bảo tệp không được nhập lần thứ hai

PHP xử lý trước một trang mã tìm kiếm các định nghĩa hàm. Đáng ngạc nhiên là các chức năng không cần phải được xác định trước khi gọi chúng. Có thể gọi chúng trước và xác định chúng sau. Tuy nhiên, xác định chức năng trước khi gọi chúng là cách tốt nhất. Nó làm cho mã dễ đọc và dễ bảo trì hơn


Đối số chức năng là những gì mang lại cho các chức năng tính linh hoạt của chúng. Rốt cuộc, các chức năng có nghĩa là mã có thể sử dụng lại sẽ thực hiện một nhiệm vụ tương tự cho các trường hợp khác nhau. Các đối số cho phép chúng tôi cung cấp đầu vào khác nhau và đầu vào khác nhau trả về đầu ra khác nhau

Các biến được sử dụng làm đối số không được đính kèm với bất kỳ biến nào được chuyển vào đối số. Không liên quan tên biến nào được sử dụng bên ngoài chức năng. Đối số sẽ đặt một biến mới cho hàm sử dụng

Thí dụ

$f và $l sẽ trở thành $first_name, $last_name bên trong hàm

Một chức năng phức tạp hơn

Đây là một ví dụ thực tế về việc xác định và sử dụng một hàm phức tạp hơn. Chúng ta cũng sẽ tham khảo lại ví dụ này trong các phần tiếp theo

 1) {
      $sentence .= ',';
    }
    $sentence .= " and " . $last_word;
    return $sentence;
  }

  $letters = ['a', 'b', 'c', 'd'];

  echo to_sentence($letters, true);
  // a, b, c, and d

  echo to_sentence($letters, false);
  // a, b, c and d
?>

Ghi chú. "Return" ở dòng 4 sẽ trả về một giá trị và thoát khỏi hàm ngay lập tức


Giá trị mặc định của đối số

Tất cả các đối số được liệt kê trong định nghĩa hàm sẽ mong đợi các giá trị theo mặc định. PHP sẽ báo lỗi nếu thiếu đối số

Lưu ý trong ví dụ thứ ba rằng null được coi là giá trị chấp nhận được. Điều này cũng đúng với 0, "" và false

Giá trị mặc định có thể được đặt cho các đối số chức năng. Việc cung cấp giá trị cho đối số trở thành tùy chọn và giá trị mặc định sẽ được sử dụng khi giá trị không được cung cấp

Các giá trị mặc định được đặt bằng cách gán biến trong danh sách đối số

Mặc định có thể được đặt cho nhiều đối số

Đối số tùy chọn ở cuối

Điều quan trọng là tất cả các đối số tùy chọn đều ở cuối danh sách đối số. Tức là, ở bên phải đối số cuối cùng không có giá trị mặc định. Điều này là do PHP cần duy trì đúng thứ tự của các giá trị để gán đúng cho các đối số. Bỏ qua một giá trị trước đó sẽ loại bỏ đơn đặt hàng

Trong ví dụ này, $array không phải là tùy chọn. PHP giả định rằng true phải là giá trị được sử dụng cho đối số đầu tiên và giá trị đối số thứ hai không được cung cấp

Lỗi thứ hai cho thấy nó đang sử dụng giá trị boolean thay cho mảng


Giá trị trả về của hàm

Các chức năng phải luôn trả về một giá trị

Thường có một giá trị được trả về ở cuối hàm, nhưng các hàm có thể trả về một giá trị tại bất kỳ điểm nào trong mã của chúng. Mọi mã còn lại sẽ không thực thi

Nhìn lại ví dụ to_sentence() và chú ý cách dòng 4 có thể trả về một giá trị. Nếu vậy, mã sau dòng 4 sẽ không thực thi. Nếu không, thì giá trị ở dòng cuối cùng sẽ được trả về


trở lại so với. tiếng vang

Đối với đầu ra, cách tốt hơn là trả về các giá trị từ một hàm và sau đó sử dụng tiếng vang để xuất kết quả, thay vì sử dụng tiếng vang để xuất nội dung từ bên trong hàm

Đây là một ví dụ khó thấy sự khác biệt. Cả hai chức năng này có cùng một kết quả. "9" sẽ được xuất ra

Ví dụ sử dụng tiếng vang

Ví dụ sử dụng trả về

Sử dụng giá trị trả về linh hoạt hơn. Một giá trị lặp lại chỉ có thể được xuất ra. Nhưng một giá trị được trả về có thể được xuất ra, được gán cho một biến hoặc được sử dụng với mã khác

Dưới đây là hai ví dụ để chứng minh

Ví dụ sử dụng tiếng vang

Ví dụ sử dụng trả về

Ví dụ sử dụng echo không trả về kết quả như mong đợi. echo xuất ra nội dung ngay lập tức. thứ tự là. Dòng ban đầu gọi hàm add(), "9" được xuất ra ngay lập tức bằng echo, sau đó hàm không trả về giá trị nào và thoát, sau đó dòng ban đầu xuất ra "2 + 7 ="

Một kỹ thuật phổ biến là tích lũy đầu ra trong một biến để trả về khi kết thúc. Điều này được thực hiện bằng cách sử dụng $sentence trong ví dụ to_sentence(). Đây là một ví dụ khác

4

Hàm trả về một giá trị

Hàm chỉ trả về một giá trị. Để trả về nhiều hơn một giá trị, hãy sử dụng một mảng

PHP có một biến tích hợp có tên list() có thể hữu ích cho việc gán các giá trị mảng cho các biến. Các biến được dùng làm đối số cho list() sẽ được gán giá trị mảng theo thứ tự xuất hiện trong mảng

Lưu ý rằng việc sử dụng list() sạch hơn bao nhiêu so với việc gán từng phần tử riêng lẻ

Mọi phần tử mảng không có biến tương ứng trong list() sẽ bị bỏ qua


Phạm vi biến đổi

Các hàm có một "thế giới" biến khép kín. Họ giữ một sự phân chia giữa các biến bên trong và bên ngoài chức năng. Các biến được sử dụng trong hàm không có mối quan hệ với các biến bên ngoài và ngược lại. "Phạm vi biến" được giới hạn bên trong hàm

phạm vi biến đổi. vùng mã trong đó tên biến có ý nghĩa và "hiển thị"

Có hai loại phạm vi mà các biến có thể có

phạm vi toàn cầu. vùng mã mặc định (không phải trong hàm hoặc lớp)

phạm vi cục bộ. khu vực mã bên trong một hàm hoặc lớp

Thí dụ. scope_test() trả về giá trị được truyền cho $a, không phải $a được đặt trước đó trong phạm vi toàn cầu

Các chức năng không thể truy cập các biến bên ngoài phạm vi cục bộ của chúng

Phạm vi toàn cầu không thể truy cập các giá trị bên trong một chức năng


toàn cầu

Từ khóa PHP global được sử dụng cho các biến được chia sẻ giữa phạm vi toàn cầu và cục bộ

Ở đây nó chia sẻ một biến phạm vi toàn cục với phạm vi cục bộ

Ở đây nó chia sẻ một biến phạm vi cục bộ với phạm vi toàn cầu

toàn cầu nên hiếm khi được sử dụng. Nó được coi là một thực hành lập trình kém. Nó cho phép một chức năng thay đổi giá trị toàn cầu và điều đó có thể xảy ra ở đâu đó sâu trong cơ sở mã mà nhà phát triển không nhận ra. Nó có thể làm cho lỗi khó theo dõi. Sẽ tốt hơn nhiều nếu truyền vào các đối số và trả về các giá trị. Sau đó, dữ liệu đầu vào và đầu ra dễ dàng nhìn thấy và kiểm tra

Một hàm có thể chứa bao nhiêu đối số?

Ngoại trừ các hàm có danh sách đối số có độ dài thay đổi, số lượng đối số trong lệnh gọi hàm phải bằng với số lượng tham số trong định nghĩa hàm. Con số này có thể bằng không. Số đối số (và tham số tương ứng) tối đa là 253 cho một hàm .

Một hàm có thể có 3 đối số không?

Chúng ta truyền đối số trong một hàm, chúng ta không thể truyền đối số nào cả, một đối số hoặc nhiều đối số cho một hàm và có thể gọi hàm .

Một hàm có thể có quá nhiều đối số không?

Đối với nhà phát triển, điều quan trọng là phải cân nhắc rằng việc có quá nhiều đối số có xu hướng khiến hàm trở nên quá phức tạp . Điều này làm tăng thời gian phát triển vì người khác khó sử dụng hơn và hiểu các phần mã vi phạm.

Các đối số chức năng PHP là gì?

Đối số hàm PHP . Các đối số được chỉ định sau tên hàm, bên trong dấu ngoặc đơn. Bạn có thể thêm bao nhiêu đối số tùy thích, chỉ cần phân tách chúng bằng dấu phẩy. An argument is just like a variable. Arguments are specified after the function name, inside the parentheses. You can add as many arguments as you want, just separate them with a comma.