首頁  >  文章  >  後端開發  >  PHP如何使用二進位保存使用者狀態

PHP如何使用二進位保存使用者狀態

小云云
小云云原創
2018-01-31 09:07:441141瀏覽

使用者狀態保存是一個很常見的需求,一般用來保存使用者狀態的方式是在資料庫表中建立多個欄位來儲存對應的使用者狀態,例如要儲存使用者是否綁定了手機號碼和QQ,則需要2個欄位(mobile,qq)來保存。本文主要為大家分享一篇PHP 使用二進位保存使用者狀態的實例,具有很好的參考價值,希望對大家有幫助。一起跟著小編過來看看吧,希望能幫助大家。

如果使用二進位來保存使用者的狀態的話則只需要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如何處理二進位資料

MySQL二進位日誌相關問題詳解

nodeJS中二進位buffer物件實例詳解

#

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

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