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

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

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

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

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Q&A

3回答

406閲覧

echoで出力されません。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

1グッド

1クリップ

投稿2018/05/22 23:33

編集2018/05/23 01:19

下記のコードの$_SESSION["cart" ]という配列の中身をechoで出力するにはどうしたら良いでしょうか?
分かる方いましたらお願いします。

php

1<?php 2if(isset($_SESSION["cart"])==true && isset($_POST["item"])==true){ 3$_SESSION["cart"][]=$_POST["item"]; 4 5}elseif(isset($_POST["item"])==true){ 6$_SESSION["cart"][0]=[$_POST["item"]]; 7} 8?>

下記がサーバーに出てきたエラーコードです。

php

1Parse error: syntax error, unexpected 'if' (T_IF) in ~ on line 2

先ほどと質問が変わりますが、下記のコードをループ処理を利用してechoで呼び出すにはどうすればよいでしょうか?何度もすみません。

php

1<?php 2session_start(); 3if(isset($_SESSION["cart"])==true && isset($_POST["item"])==true){ 4$_SESSION["cart"][]=$_POST["item"]; 5}elseif(isset($_POST["item"])==true){ 6$_SESSION["cart"][0]=[$_POST["item"]]; 7} 8echo ($_SESSION)["cart"]; 9?> 10

上記のコードをそのままechoで呼び出した場合のエラーコードです。

php

1Notice: Array to string conversion in ~ on line 8 2Array
DrqYuto👍を押しています

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

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

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

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

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

m.ts10806

2018/05/23 00:00

Echoは別言語のフレームワークなのでタグから外してください。
m.ts10806

2018/05/23 00:00

プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)正しく反映されているかどうかは質問編集画面のプレビューを見ながら編集していってください。
m.ts10806

2018/05/23 00:02 編集

ところどころで配列の添え字[]が全角になっていますが、これは?また「echoで出したい」割にコード内にechoで出そうとしている箇所が見られませんが、まずは何かしらやってみたのでしょうか。
m.ts10806

2018/05/23 00:22

エラーはコピペしてもらえませんか? om なんて記述にはなりませんよ。
退会済みユーザー

退会済みユーザー

2018/05/23 00:22

["cart"]に入っている中身はどうやって表示できるようになるかよくわからないです。
m.ts10806

2018/05/23 00:25 編集

エラーメッセージからするとそれ以前の問題です。
退会済みユーザー

退会済みユーザー

2018/05/23 00:27

具体的にどこが違うのでしょうか?
m.ts10806

2018/05/23 00:27

コードブロック部分は'ではなく```です。わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください。
m.ts10806

2018/05/23 00:28

以前の質問を解決済みとせずに新たに質問する理由が知りたいですね。未解決のまま同じコードをあげるのは良くありません。
m.ts10806

2018/05/23 00:33

ただ提示コードではそのエラーメッセージはでてきません。コードはこれだけではないのでは?それかきちんとコードがコピペされてないのでは?
m.ts10806

2018/05/23 00:34

正しく反映されているかどうかは質問編集画面のプレビューを見ながら編集していってください。 と書いたはずですが・・・。```の直前直後には改行が必要です。
m.ts10806

2018/05/23 00:37

勘違いされると良くないので細くしておくと冒頭は ```php ←のあとに改行 後ろの ``` ←の後に改行 です。
退会済みユーザー

退会済みユーザー

2018/05/23 00:38

すみません。直しました。
m.ts10806

2018/05/23 01:23

なぜ、回答や記事を適当に自身の中で解釈して適当に書くんですか?どこを見たらそのような記述になるのか分かりません。私の回答に「配列に対してそのままechoをすると Arrayと表示されたりするので、きちんと配列の中身を解析した上でechoしてくださいね」と書いたはずですよね。
m.ts10806

2018/05/23 01:24

自分で配列を作っているのだから、本来は自分が中身を一番知っていなければならないはずです。
m.ts10806

2018/05/23 01:27 編集

最初のechoの指摘と同じですね「ループ処理を利用して」とあるのに1つもループ処理を書いていません。最初のエラーは解消できたのでしょうか?できていないのに追加質問をしたのでしたら論外です。問題は1つ1つ解決していかなければ新たな問題を引き起こすだけ。いつまでたっても問題は解決しません。困るのはあなたですよ?
退会済みユーザー

退会済みユーザー

2018/05/23 01:36

ループ処理を使っていないのは単に書き方が分からなかったからです。if-elseifの部分にwhileを入れたのですがそこから上記のコードをどう修正していいか分からないのです。
m.ts10806

2018/05/23 01:41 編集

前回の質問でも指摘しましたが「めちゃくちゃ調べた」ところをちゃんと具体的に書かないといけません。 あと、調べただけでは何も進まないので、まずは思ったとおり組んで色々試行錯誤していかないと覚えられません。正直なところ、質問の内容だけではズバリの回答はできないため、私は「考え方」「調べ方」を回答としています。この質問の内容だけで$_SESSION["cart"] $_POST["item"] などに何が入っているか、質問者さん以外の見ている人は分かりますか?
退会済みユーザー

退会済みユーザー

2018/05/23 01:54

分からないと思います。この問題はPOST送信されていない状態で$_SESSION["cart"]中身を見るにはどうしたらいいのかという課題です。本来ならPOST送信して受け取った中身を見るのが普通ですがそうではありません。ただ、$_SESSION["cart"]の後に添え字である数字を上記のコードに記述して書くそうです。
m.ts10806

2018/05/23 01:56

回答きちんと読んでください。私もyambejpさんも「中身を見るにはどうしたらいいか」回答をしています。それぞれの関数の意味が分からなければ調べればいいだけの話です。それだけPHPマニュアルは内容が充実しています。
guest

回答3

0

コメントに書いた通り、同コードではエラーの再現確認ができなかったので、
その部分はエラーメッセージをそのままGoogle検索に入れて調べてください。

Parse error: syntax error, unexpected 'if' (T_IF)

で調べれば結構でてきます。
Parse error: syntax errorは文法のミスではありますが状況により解決方法が違ってくるので、
他者の環境で再現できない以上は、自身のコードにどこが誤りがあるのか、自身で見つけるしかありません。

本当にコード全体を提示していますか?
参考書のコードだからと省略していませんか?
コードは参考書のコードではなく自身が書かれたコードを提示しないと意味がありませんよ?

以前の質問で「某」とされたままなのでこちらでは確認する術がありませんのであしからず。

私がコメントで指摘しているのはタイトルで「echoで出力されません。」とありながらコード内ではどこにもechoを書いていないところです。
echoを書いていて出力されていないなら分かりますが、どこにもechoを書いていないのだから出力されないのは当然ですよね?

だからまずはechoを書きましょう。echoの書き方が分からないなら調べましょう。 参考:PHPマニュアル:echo

$_SESSIONや$_POSTを使われていますが、その使い方は大丈夫ですか?
それも調べましょう。 参考:PHPマニュアル:Session-基本的な使用法 / PHPマニュアル:$_POST

上記を読んだら「配列」であることが分かります。
で、あれば配列の中身を出力する方法を調べれば良いですね。

検索キーワードは
[PHP 配列 出力]
[PHP 配列 echo]

とかでしょうか。
上記に挙げた記事に参考になるものはあると思いますよ。
マニュアルにもあるとおり、echo は文字列を出力するものなので、配列に対してそのままechoをすると Arrayと表示されたりするので、きちんと配列の中身を解析した上でechoしてくださいね。


質問追加されたのでその分の参考記事を追加

[PHP 配列 ループ]

[PHP 配列 ループ 多次元]

投稿2018/05/23 00:54

編集2018/05/23 01:50
m.ts10806

総合スコア80842

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

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

0

これでは解決していないということですか?
前提として$_SESSIONを利用するならsession_start()を実行して下さい

PHP

1session_start(); 2if(isset($_SESSION["cart"])==true && isset($_POST["item"])==true){ 3$_SESSION["cart"][]=$_POST["item"]; 4 5}elseif(isset($_POST["item"])==true){ 6$_SESSION["cart"][0]=[$_POST["item"]]; 7} 8print_r($_SESSION);

仮に上記だとしてitemがPOSTで送られてこない限り空です

投稿2018/05/23 00:32

yambejp

総合スコア114747

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

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

m.ts10806

2018/05/23 00:56

前の質問のyambejpさんの回答にもsession_start();が書かれていますし、見られてないんでしょうね・・。
guest

0

一個目の問題です。
もし掲示されているソースコードがそのままの場合、<?phpのあとに全角スペースやその他透明な文字列が含まれている可能性があります。

二個目の問題です。

php

1echo ($_SESSION)["cart"];

ではなく、

php

1echo $_SESSION["cart"];

とやってみて、解決するか試してみてください。

投稿2018/05/23 04:10

tomocrafter

総合スコア33

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問