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

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

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

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

Q&A

解決済

5回答

326閲覧

var_dumpの出力結果に仕組みについて

Ryota.I

総合スコア22

PHP

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

0グッド

1クリップ

投稿2019/05/07 13:10

お世話になります。
PHPの初歩の初歩の勉強中の身です。

現在ver_dump()の出力結果を考えうる限り、
いろいろなパターンを試し、その仕様を確認しているのですが、
自分の想定していた出力結果とならない組み合わせがあり、
なぜ、そのような結果となるのか、ご教示いただければと思います。
イメージ説明
↑こちらが試した記述内容。
※AWS cloud9を使用。行8番のオレンジ色のマークはまれに表示はされますが、
検証結果に影響はありません。
イメージ説明
↑Chrome上で確認した検証結果です。「ページのソースを表示」を選択の上、
視覚的に把握しやすくしました。

実行元ファイルの$8、$hの代入元のデータのはじめに0が
ついていることが影響しているということは$eの出力結果を見た上で、
そこまでは把握できるのですが、、、

では、$g、$hの出力結果となった、int(8)、int(472)とはどういう計算を経て
導き出されたものなのか、その点の理解ができません。
教えていただける方がいらっしゃいましたら、
どうかお返事をよろしくお願いいたします。

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

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

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

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

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

m.ts10806

2019/05/08 04:28

出力結果はともかくコードは画像よりテキストにてマークダウンを利用して提示されたほうが再現確認も容易に行えるので回答する側としては助かります。 既に回答はついていますが、質問編集して提示いただけますか?
kei344

2019/05/08 13:03

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況を質問文に追記ください。
Ryota.I

2019/05/08 13:26

mts10806様 質問方法についてのご指摘ありがとうございます。 他の皆様よりいただいた回答で本件についてはある程度の理解と、 より理解を深めるきっかけもいただけたため、 この質問については解決済みとさせていただきました。 次回質問させていただく際にはマークダウンを利用して投稿しますので、 もしご負担にならなければ、その際にはご回答をよろしくお願いいたします。 kei344様 ご指摘ありがとうございます。本質問については解決済みといたしました。 また、何かしらご質問させていただくことがあると思いますので、 その際は改めてよろしくお願いいたします。
guest

回答5

0

先頭が0の数値リテラルは八進数となります。
var_dump()では数値は10進数で表示されるため質問に記載の結果となります

投稿2019/05/07 13:16

編集2019/05/07 13:18
Y.H.

総合スコア7914

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

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

Ryota.I

2019/05/08 12:13

ご返答ありがとうございます。 八進数での扱いとなること、マニュアルを確認し把握いたしました。 引き続き学習していきますので、何かあればよろしくお願いいたします。
guest

0

数値のとりあつかいについては

  • 0bから始まる0と1の組み合わせが2進数
  • 0からはじまる0-7の数字の組み合わせが8進数
  • 0xからはじまる0-9,a-fの組み合わせが16進数
  • 10進数+e+n桁数で数値*10^nのfloat値

が返ります。

また余談ですが文字列になりますが\xから始まる16進数nをつかえば
chr(hexdec(n))と同等の値を得ることができます。

必要に応じて利用していくとよいでしょう

PHP

1 var_dump(0b1110,0x1f,123e3,"\x41",chr(hexdec("41")));

投稿2019/05/08 00:53

yambejp

総合スコア114784

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

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

Ryota.I

2019/05/08 13:05

ご返答ありがとうございます。 箇条書きで記載いただいた4点の仕組みでも十分、現状としては非常に助かる内容でしたが、余談の内容部分についてもじっくり反芻し、役立てていきたいと思います。自分の認識ではvar_dump()については変数への代入した内容の出力を前提にしているもの、という理解をしていたため、記載いただいたコードの内容から、var_dump()を使用する上で、変数への代入が前提ではないということも加えての理解ができました。その点も含め、ありがとうございました。
guest

0

ベストアンサー

「どういう計算を経て」ということであれば、先頭が「0」なら8進数として扱われるので、

8^1 * 1 + 8^0 * 0 = 8 8^2 * 7 + 8^1 * 3 + 8^0 * 0 = 472

ということになりますねー。

投稿2019/05/07 15:25

takepan1973

総合スコア821

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

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

Ryota.I

2019/05/08 12:50

ご返答ありがとうございます。 記載していただいた内容を元に、8進数から10進数への変換方法を知るきっかけとなりました。
guest

0

整数

知らんと分からんよね^^;
この辺は厄介ですw

投稿2019/05/07 13:17

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/05/07 13:17

かぶりまくったな^^;
Ryota.I

2019/05/08 12:19

マニュアルリンク付でご返答ありがとうございます。 この挙動を経験した上で、おそらく~進法で出力されているのではという程度は勘がはたらいたのですが、それ以降マニュアルでどう調べていけば、というところでつまづいておりました。 もう少し自分で調べる範囲を柔軟にかつ広範囲にし、それでもわからなければ質問いたします。
guest

0

0 を書くと 8進数表記になるからでは。

【PHP: 整数 - Manual】
https://www.php.net/manual/ja/language.types.integer.php

8 進数表記を使用する場合、数の前に 0 (ゼロ) を付ける必要があります。

投稿2019/05/07 13:16

kei344

総合スコア69400

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

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

Ryota.I

2019/05/08 12:15

マニュアルURL付で返答いただきありがとうございます。 自分でもマニュアルを閲覧はしていましたが、その項目にはたどり着けませんでして。。 今後、自分で確認する幅をもう少し広げた上で、質問させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問