需求:
1. 用一个常量表示所有开关的状态
2. 关闭任意一个指定的开关
3. 打开任意一个指定的开关
4. 一键打开所有的开关
5. 一键关闭所有的开关
代码实现如下:
<?php
header("content-type:text/html;charset=utf-8");
//定义常量,代表五个灯泡
define('L1',1); // 00001
define('L2',2); // 00010
define('L3',4); // 00100
define('L4',8); // 01000
define('L5',16);// 10000
$state = 10;
//展示5个灯泡的状态
function showLights()
{
for($i=1;$i<=5;++$i)
{
$light = 'L'.$i;
if($GLOBALS['state'] & constant($light) )
{
echo 'L'.$i.'亮 ';
}
else
{
echo 'L'.$i.'灭 ';
}
}
}
echo "开始灯泡状态:<br>";
showLights();
echo "<br>";
//关闭任意一个指定的灯泡
$state = $state & ~L2;//关闭灯泡L2
echo "关闭灯泡L2:<br>";
showLights();
echo "<br>";
//打开任意个指定的灯泡
$state = $state | L1;//打开灯泡L1
echo "打开灯泡L1:<br>";
showLights();
echo "<br>";
//一键打开所有灯
function turnOnAll()
{
for($i=1;$i<=5;++$i)
{
$light = 'L'.$i;
$GLOBALS['state'] = $GLOBALS['state'] | constant($light);
}
}
//一键关闭所有灯
function turnOffAll()
{
for($i=1;$i<=5;++$i)
{
$light = 'L'.$i;
$GLOBALS['state'] = $GLOBALS['state'] & ~constant($light);
}
}
echo "打开所有灯:<br>";
turnOnAll();
showLights();
echo "<br>";
echo "关闭所有灯:<br>";
turnOffAll();
showLights();
echo "<br>";
//打开任意个指定的灯泡
$state = $state | L3;//打开灯泡L3
echo "打开灯泡L3:<br>";
showLights();
echo "<br>";