[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>