[PHP-users 3410] Re: 論理積での条件分けについて
Mashiki
php-users@php.gr.jp
Thu, 08 Nov 2001 14:14:50 +0900
Mashikiです。
>理想は、
> if (man | I) {
> <a href="all.html">みんなのページへ</a>
> } elsif(man | J) {
> <a href="a.html">A会員ページへ</a>
> } elsif(man | K) {
> <a href="ab.html">A,B会員のページへ</a>
> } elsif(man | L) {
> <a href=ac.html">A,C会員のページへ</a>
> }
>なのですが…。
文脈から察するにやりたいことは以下のようだと思います。
bindec()と論理演算子|をマニュアルで見てください。
やりたいことがもっと性格にわかれば、arrayの連想配列を
使ったほうが奇麗に決まると思います。また|の代わりに
排他的論理和(^)が適切な場合もあります。
<html><body>
<?php
$man = '111';
echo "会員A:".disp($man)."<br>";
$man = '010';
echo "会員B:".disp($man)."<br>";
$man = '001';
echo "会員C:".disp($man)."<br>";
$man = '100';
echo "会員Z:".disp($man)."<br>";
function disp($man) {
$ALL = bindec('111'); // または素直に7
$J = bindec('011'); // または素直に3
$K = bindec('101'); // または素直に5
$L = bindec('110'); // または素直に6
$man_2 = bindec($man);
if ($man_2 == $ALL) {
return '<a href="all.html">みんなのページへ</a>';
} elseif (($man_2 | $J)==$ALL) {
return '<a href="a.html">A会員のページへ</a>';
} elseif (($man_2 | $K)==$ALL) {
return '<a href="ab.html">A,B会員のページへ</a>';
} elseif (($man_2 | $L)==$ALL) {
return '<a href="ac.html">A,C会員のページへ</a>';
}
}
?>
</body></html>