首頁  >  文章  >  後端開發  >  PHP 使用二進位保存使用者狀態的實例php技巧

PHP 使用二進位保存使用者狀態的實例php技巧

jacklove
jacklove原創
2018-06-28 17:50:461389瀏覽

下面小編就為大家分享一篇PHP 使用二進位保存使用者狀態的實例,具有很好的參考價值,希望對大家有幫助。一起跟著小編過來看看吧

前言

使用者狀態保存是一個很常見的需求,一般用來保存使用者狀態的方式是在資料庫表中建立多個欄位來儲存對應的使用者狀態,例如要儲存使用者是否綁定了手機號碼和QQ,則需要2個欄位(mobile,qq)來保存。

如果使用二進位來保存使用者的狀態的話則只需要1個欄位(status)就能保存多個使用者狀態。

當然使用二進位來保存也有一些壞處,例如不能儲存詳細的信息,只能用來判斷狀態,而且在資料庫中可讀性也比較差。下面是一個比較簡單的Demo。

程式碼

<?php
/**
 * 使用二进制来保存用户状态
 */
//首先定义4个用户状态
define(&#39;MOBILE&#39;, 1); //手机号绑定
define(&#39;EMAIL&#39;, 2);  //邮箱绑定
define(&#39;WECHAT&#39;, 4); //微信绑定
define(&#39;QQ&#39;, 8);   //QQ绑定
//模拟用户类
class User {
  public $user_name = "";
  public $status = 0; //用来保存用户状态
  function __construct($user_name, $status) {
    $this->user_name = $user_name;
    $this->status = $status;
  }
}
//new一个测试用户
$test_user = new User("test_user", 0);
//先判断用户是否绑定了手机号
if (($test_user->status & MOBILE) == MOBILE)
  echo "first:该用户已经绑定手机号,用户状态是:" . $test_user->status . "</br>";
else
  echo "first:该用户没有绑定手机号,用户状态是:" . $test_user->status . "</br>";
//接着该用户去绑定了手机号 微信 和 QQ
$test_user->status = MOBILE | WECHAT | QQ;
//再判断一下用户是否绑定了手机号
if (($test_user->status & MOBILE) == MOBILE)
  echo "second:该用户已经绑定手机号,用户状态是:" . $test_user->status . "</br>";
else
  echo "second:该用户没有绑定手机号,用户状态是:" . $test_user->status . "</br>";
//再判断一下用户有没有绑定邮箱
if (($test_user->status & EMAIL) == EMAIL)
  echo "third:该用户已经绑定邮箱,用户状态是:" . $test_user->status . "</br>";
else
  echo "third:该用户没有绑定邮箱,用户状态是:" . $test_user->status . "</br>";
//然后这个用户解除了手机号绑定
$test_user->status = ($test_user->status & (~MOBILE));
//再次判断用户是否绑定了手机号
if (($test_user->status & MOBILE) == MOBILE)
  echo "fourth:该用户已经绑定手机号,用户状态是:" . $test_user->status . "</br>";
else
  echo "fourth:该用户没有绑定手机号,用户状态是:" . $test_user->status . "</br>";

以上這篇PHP 使用二進位儲存使用者狀態的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持php中文網。

您可能感興趣的文章:

PHP Redis 訊息佇列實作高並發下註冊人數統計的實例php實例

laravel ORM 只開啟created_at的幾種方法總結php實例

PHP 記錄訪客的瀏覽資訊方法php實例

#

以上是PHP 使用二進位保存使用者狀態的實例php技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn