ブラウザがこのページ(1.php)を何回訪れたかをcookieを使って表示させました。
以下はそのページ(1.php)のプログラムです。
PHP
1<?php 2 3if (isset($_COOKIE["visit"])){ 4 $count = $_COOKIE["visit"]; 5} else { 6 $count = 0; 7} 8 9$set = setcookie("visit", ++$count, time()+60*5); 10?> 11 12<!DOCTYPE html> 13<html lang="ja"> 14<head> 15<meta charset="utf-8"> 16<title>page1</title> 17</head> 18 19<body> 20 21 <?php 22 if ($set) { 23 echo "このページの訪問は", $count, "回目です。"; 24 echo '<a href="2.php">ページを移動する</a>'; 25 echo '(<a href="3.php">リセットする</a>)'; 26 } else { 27 echo "エラー"; 28 } 29 ?> 30 31</body> 32</html> 33
このプログラムでは正しく動作するのですが、setcookie()の部分の値を$count++にすると、何度ページを訪問しても1回目と表示されます。
$set = setcookie("visitedCount", $count++, time()+60*5);
$count = 0; echo "0 となります: " . $count++; echo "1 となります: " . $count; $count = 0; echo "1 となります: " . ++$count; echo "1 となります: " . $count;
こうだとすれば、ページを訪問し続けると、
$count++も同じく「1回目の訪問」「2回目の訪問」「3回目の訪問」...
となりませんか?++$countで正しく動作するのは理解できるのですが、$count++で何度訪問しても1回目になる理由がわかりません。
以下の認識は正しくないでしょうか?
$count++の場合。まず最初のcount++は0を返す。$countには1が代入される。 そして「1回目の訪問」と出力。 二回目の訪問では$countには1が入っているので、$count++は1を返す。 そして$countには2が代入される。 そして「2回目の訪問」と出力 $++countの場合。まず最初のcount++は1を返す。$countには1が代入される。 そして「1回目の訪問」と出力。 二回目の訪問では$countには1が入っているので、$count++は2を返す。 そして$countには2が代入される。 そして「2回目の訪問」と出力
細かかくてすみません。教えていただけると幸いです。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/01 10:53
2017/09/01 11:27