- 締切済み
もっと短くコードをかきたい
PHP初心者です。 下記のコードを書いたのですが、問題なく動作します。 <?php if ($_COOKIE["pid"] == ""){ $pid = $_GET["pid"]; setcookie("pid", $pid, time()+60); }elseif ($_GET["pid"] == ""){ $pid = $_COOKIE["pid"]; }elseif ($_GET["pid"] !== $_COOKIE["pid"]){ $pid = $_GET["pid"]; setcookie("pid", $pid, time()+60); }else{ $pid = $_COOKIE["pid"]; } ?> ただ、あまり良い書き方ではないような気がするのですが、 もっと短くコンパクトに書く方法はないのでしょうか。 ご協力お願いします。 (ちなみにプログラムの用途は引数によって表示するhtmlを変えるといったものです。)
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- i2719
- ベストアンサー率35% (11/31)
短くなっていないかもしれないが if ( !($_GET['pid']=='' || $_GET['pid']==$_COOKIE['pid']) || $_COOKIE['pid']=='' ){ $pid = $_GET['pid']; setcookie('pid', $pid, time()+60); } else { $pid = $_COOKIE['pid']; }
- yambejp
- ベストアンサー率51% (3827/7415)
if($_GET["pid"]!=""){ $pid = $_GET["pid"]; setcookie("pid", $pid, time()+60); }else{ $pid = $_COOKIE["pid"]; } とか? #1さんのだと、GETが空でクッキーを見た場合でも クッキーのexpireを再設定しているので若干仕様がちがうかもしれませんね。
- maura
- ベストアンサー率46% (48/104)
$pid = $_GET["pid"] == "" ? $_COOKIE["pid"] : $_GET["pid"]; if ( $pid == "" ){ setcookie("pid", $pid, time()+60); }
お礼
いただいたコードで全く同じことができました! ありがとうございます! やはり同じ記述を何度も書くより一回で済んだ方が、 見やすいしメンテもしやすいので、いいですね。 いつも同じ記述がたくさんできてしまうのですが、 なにか考え方のコツなどがあるのでしょうか。 それともこればっかりは経験をつむしかないのでしょうか。。。