質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

5247閲覧

PHPでセッションの値にfalseをいれることはできない?

shiro96

総合スコア21

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/05/08 12:14

編集2017/05/08 14:34

PHPでセッションの値にfalseをいれることはできない?

セッションにtrueかfalseをいれて、判定ごとにtrueかfalseを書き換えたいと思っています。
一回セッションにtrueをいれると、falseで書き換えることが出来ません。
var_dumpでsessionでとってきた値がすべてbool[true]になっているのを確認しました。
falseをセッションにいれることはできないのでしょうか?
今は数値の1と2で代用して真偽判定をしていますが、できればbool型を使いたいです。。。

###該当のソースコード

php

1if(isset($hoge)){ 2 if($oldhoge[0]['num']< $newhoge[0]['num']){ 3 $result = true; 4 }else{ 5 $result = false; 6 } 7 8$_SESSION['hoge'] = $result; 9 10---- 11別ページにて 12$result = $_SESSION['hoge']; 13//ここにtrueは正しく入るのですが、falseの場合必ずtrueになります。 14

###試したこと
var_dumpで$resultをみると最初はnull、判定のループを始めるとbool[true]がずっと続きます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takaboo

2017/05/08 12:22

状況を再現するコードを書いておくと回答がつきやすいです
takaboo

2017/05/08 14:27

肝心の$_SESSION['hoge']に値を代入するコードがないですね…
shiro96

2017/05/08 14:34

すみません、修正しました。本当のコードはこのように書いていました。
guest

回答3

0

ベストアンサー

まさか。

php

1<?php 2session_start(); 3 4if (isset($_SESSION['bool'])) { 5 var_dump($_SESSION['bool']); 6 $_SESSION['bool'] = !$_SESSION['bool']; 7} 8else { 9 $_SESSION['bool'] = true; 10 echo "Sessionをセットしました"; 11} 12```ってコードを書くと、 13一回目は

Sessionをセットしました
```と出て、二回目以降は、bool(true)bool(false)の繰り返しになりますよ。

ちなみに、サーバー側のセッションファイルには
bool|b:0;とかbool|b:1;という風に入り、boolという名前のbool型、値は01だと分かります。

投稿2017/05/08 12:31

編集2017/05/08 12:40
shi_ue

総合スコア4437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

たぶんセッションに格納する方のPHPの条件式に問題があるのでは?

PHP

1if(isset($hoge)){ 2 if($oldhoge[0]['num']< $newhoge[0]['num']){

2つめのif文で常にtrueの方に行ってるってことはないですか?
issetは$hogeなのに、次のステップでは$oldhogeと$newhogeなのもどうなんでしょう?

投稿2017/05/09 00:29

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

if($oldhoge[0]['num']< $newhoge[0]['num']){
のif文が何かの考慮漏れだと思いますのでこの前に

var_dump($oldhoge[0]['num']);
var_dump($newhoge[0]['num']);
で中身を見てみるのはいかがでしょうか?

投稿2017/05/11 10:25

hase_done

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問