Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để triển khai các đặc quyền của diễn đàn

Mặt nạ bit quyền được hiểu rõ nhất khi được biểu diễn dưới dạng nhị phân, với mỗi chữ số đại diện cho một quyền được bật hoặc tắt. Vì vậy, nếu các quyền X, Y và Z tồn tại và tôi chỉ có quyền truy cập vào X và Z, 101 sẽ tuyên bố rằng tôi có quyền đầu tiên và quyền thứ ba được cấp cho tôi, nhưng không phải quyền thứ hai. Số nhị phân 101 tương đương với số thập phân 5 , vì vậy đó là những gì cuối cùng sẽ được lưu trữ trong cơ sở dữ liệu. Một số nguyên nhỏ là đối tượng lưu trữ hiệu quả hơn nhiều so với một chuỗi hoặc một số số nguyên nhỏ.

CHỈNH SỬA: Tôi nhận ra rằng việc tận dụng các chức năng chuyển đổi hiện có dễ dàng như thế nào để tiến hành triển khai khá nhanh chóng. Đây là một mẫu.

<?php
function bitmask_expand($n) {
  // 9 returns array(1, 0, 0, 1)
  return str_split(base_convert($n, 10, 2));
}

function bitmask_compact($a) {
  // array(1, 0, 0, 1) returns 9
  return (int) base_convert(implode($a), 2, 10);
}

$ns = range(0, 7);
foreach($ns as $n) {
  print_r($b = bitmask_expand($n));
  echo bitmask_compact($b), "\n\n";
}

Bạn có thể nhận được hiệu suất tốt hơn nếu bạn sử dụng các vòng lặp, thay vì kéo ngược lại các chuỗi, nhưng điều này minh họa nguyên tắc khá rõ ràng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lặp lại thông qua Mysql Rows trong PHP

  2. Cách sắp xếp truy vấn MySQL này

  3. Nhập dữ liệu CSV hàng loạt trong UTF-8 vào MySQL

  4. Các hàm toán học trong MySQL có nhanh hơn PHP không?

  5. Làm cách nào để thêm trọng số vào bảng MySQL và chọn các giá trị ngẫu nhiên theo các giá trị này?