微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 使用bitcode

对于SO来说,这只是一点点OT,因为我不是要解决一个特定的问题,而只是为了理解某些事情的实现方式.但我是在代码之后,让我们看看它是怎么回事……

假设我们在一周中的每一天都有一个复选框,我们决定将这些复选框的任意组合存储为单个数字,这样:

0 = no days
  1 = Monday 
  2 = Tuesday
  4 = Wednesday
  8 = Thursday
 16 = Friday
 32 = Saturday
 64 = Sunday
127 = everyday

如何在PHP中实现该逻辑,以便如果我提交说“13”,PHP会知道只勾选周一,周三和周四复选框?

按位AND:
$input = 13;

if( $input & 1 ) {
  echo 'Monday';
}
if( $input & 2 ) {
  echo 'Tuesday';
}
if( $input & 4 ) {
  echo 'Wednesday';
}
// etc

编辑

您可以使用以下内容来避免使用ifs:

$input = 13;

$days = array('mon','tue','wed','thu','fri','sat','sun');

for( $i=0; $i<7; $i++ ) {
    $daybit = pow(2,$i);
    if( $input & $daybit ) {
        echo $days[$i] . ' ';
    }
}

//output: mon wed thu

这两种方法不仅仅是这两种方法,而是“最佳”方式取决于您的结果/输出需要的方式.

原文地址:https://www.jb51.cc/php/136083.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐