• 締切済み

もっと短くコードをかきたい

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を変えるといったものです。)

みんなの回答

  • i2719
  • ベストアンサー率35% (11/31)
回答No.3

短くなっていないかもしれないが 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)
回答No.2

if($_GET["pid"]!=""){ $pid = $_GET["pid"]; setcookie("pid", $pid, time()+60); }else{ $pid = $_COOKIE["pid"]; } とか? #1さんのだと、GETが空でクッキーを見た場合でも クッキーのexpireを再設定しているので若干仕様がちがうかもしれませんね。

trfnc223
質問者

お礼

いただいたコードで全く同じことができました! ありがとうございます! やはり同じ記述を何度も書くより一回で済んだ方が、 見やすいしメンテもしやすいので、いいですね。 いつも同じ記述がたくさんできてしまうのですが、 なにか考え方のコツなどがあるのでしょうか。 それともこればっかりは経験をつむしかないのでしょうか。。。

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

$pid = $_GET["pid"] == "" ? $_COOKIE["pid"] : $_GET["pid"]; if ( $pid == "" ){ setcookie("pid", $pid, time()+60); }

関連するQ&A