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

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

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

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

Q&A

解決済

1回答

1050閲覧

PHP_EOL が var_export に効かないのはどういう理屈でしょうか?

colette

総合スコア15

PHP

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

0グッド

0クリップ

投稿2020/09/21 09:58

以下試しますと var_export では改行がされないことに気が付きました。
この仕様はどうしてなのでしょうか?
PHP マニュアルを見てもそれらしい説明が見当たらず、不思議に思いました。

$arr = [1,2]; var_dump( $arr ).PHP_EOL; echo '改行される'; $arr = [1,2]; var_export( $arr ).PHP_EOL; echo '改行されない';

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

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

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

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

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

guest

回答1

0

ベストアンサー

回答本題

どちらも関数呼び出し時点で出力しているが、
var_dumpが最後まで改行を付けて出力しているのに対して、
var_exportは改行を付けないケースがある模様です。

なお、 コードにある PHP_EOL は全く関係ありません。

関数の概要

var_dump

var_export

挙動の類似と差異

var_dump,var_exportはどちらも、「変数の情報を出力する」関数です。(上記の通り例外あり)
どちらにも共通している点として、基本的に関数呼び出しした時点で出力を行っています。

大本の実装としてCのソースを軽く読んでみた限りだと、
本題結論にあるとおりvar_dumpvar_exportで出力しようとしている文字列生成時に
改行の有無に差があるように見えました。

PHP_EOLについて

PHP_EOL改行を指すのは間違いないのですが、今回のコードのケースでは意味をなしていません。
いずれも、出力自体は関数内で完結しているため、関数返り値に文字列結合をしているだけとなります。
(なお、その値を変数に保存していないので、なおのこと)

例えば、var_export($arr, TRUE)として出力させずに一度返り値にした場合と比べると違いが
見て取れると思います。

php

1$arr = [1,2]; 2 3echo var_export( $arr, TRUE ).PHP_EOL; 4echo '改行される';

投稿2020/09/21 10:39

attakei

総合スコア2738

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

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

colette

2020/09/21 11:07

PHPはCで書かれているんですか❓知りませんでした。 具体的なソースとご考察をどうもありがとうございました。
退会済みユーザー

退会済みユーザー

2020/09/21 19:35

全くの余談ですけど、Xdebug が導入された環境では、var_dump() の出力形式が変わります。 本件とは関係ありませんが、参考まで。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問