2012-03-09 42 views
6

Tôi nhận thấy rằng một số hàm trong PHP sử dụng các cờ làm đối số. Điều gì làm cho chúng độc đáo thay vì các đối số chuỗi đơn giản? Tôi hỏi vì tôi muốn sử dụng chúng trên các chức năng tùy chỉnh của riêng tôi nhưng tôi tò mò muốn biết quá trình này là gì.Các cờ PHP trong các đối số hàm là gì?

Chỉnh sửa: ĐỂ tóm tắt, khi nào tốt nhất để tạo chức năng tùy chỉnh với cờ và khi nào là không phải?

+0

bản sao có thể có của [cờ chức năng PHP, cách thực hiện?] (Http://stackoverflow.com/questions/3589573/php-function-flags-how) – Quentin

+0

Chỉ 'var_dump()' cosntant, nó sẽ hiển thị cho bạn Nội dung. – MetalFrog

Trả lời

9

Chúng chỉ là các hằng số ánh xạ tới một số, ví dụ: SORT_NUMERIC (hằng số được sử dụng bởi các hàm sắp xếp) là số nguyên 1.

Check out the examples cho json_encode().

Như bạn có thể thấy, mỗi cờ là 2 n. Bằng cách này, bạn có thể sử dụng | để chỉ định nhiều cờ.

Ví dụ, giả sử bạn muốn sử dụng cờ JSON_FORCE_OBJECT (16 hoặc 00010000) và JSON_PRETTY_PRINT (128 hoặc 10000000).

Nhà điều hành Bitwise OR (|) sẽ lần lượt các bit trên nếu bit hoặc của toán hạng là trên ...

JSON_FORCE_OBJECT | JSON_PRETTY_PRINT 

... là nội ....

00010000 | 1000000 

.. .which là ...

10010000 

Bạn có thể kiểm tra ...

var_dump(base_convert(JSON_PRETTY_PRINT | JSON_FORCE_OBJECT, 10, 2)); 
// string(8) "10010000" 

CodePad.

Đây là cách cả hai cờ có thể là đặt với các toán tử bitwise.

+0

Ngoài ra, chúng được gọi là "cờ bit". – BoltClock

+0

1 cũng là 2^n - cụ thể là 2^0 – bububaba

+1

@bububaba Tôi đang đi nghỉ, hoặc ít nhất, đó là lý do của tôi ... – alex

-1

Chúng chỉ là trình bao bọc với các giá trị trong đó. Vì vậy, bạn không cần phải quan tâm chính xác những gì mà hàm cần.

3

Thường cờ là số nguyên có lũy thừa liên tiếp là 2, để mỗi bit có một bit được đặt thành 1 và tất cả các giá trị khác thành 0. Bằng cách này, bạn có thể chuyển nhiều giá trị nhị phân trong một số nguyên sử dụng toán tử bit. Xem phần này để biết thêm (và có lẽ chính xác hơn) information.

Các vấn đề liên quan