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

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

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

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

Q&A

解決済

1回答

1964閲覧

Fatal error: Cannot redeclare var_dump()

mamezou

総合スコア98

PHP

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

0グッド

0クリップ

投稿2014/03/29 01:06

現在PHPのプログラミングを独学で勉強しています。
先日予約済みの関数の宣言について、試しにテストコードを作り、動かしてみました。
その際のコードは
`

<?php //private var_dump(); function var_dump($input) { $input = empty($input) ? 'empty' : $input; echo('It is private var_dump!! your input is '.$input); } var_dump('test'); ` です。 しかし「Fatal error: Cannot redeclare var_dump() in /var/www/html/Test/test.php on line 10」というエラーが出てしまいました。 このエラーがどうして起こっているのか、わかる方がおられましたらご指導よろしくお願いいたします。 あともう1つ、var_dump()の出力制御を行いたいのですが、やり方がいまいちわかりません。 この方法についても、分かりやすいやり方をご教示いただけたら幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

「Fatal error: Cannot redeclare var_dump() in /var/www/html/Test/test.php on line 10」というerrorは、書かれているコードのline10に問題があるということを教えてくれています。

Fatal error: Cannot redeclareを翻訳すると「致命的エラー:再度宣言することができません」となります。
それを踏まえてもう一度テストコードとエラーコードを見直ししてみて下さい。

var_dump()という名前の関数は、PHPで既に用意されている関数ですが、同じ名前の関数を自分で作ろうとしているため、再度宣言することはできないよ、と言われています。

本来はこのような同じ名前の関数は混乱のもとなので使用すべきではないのですが、
もしどうしてもこの形でエラーを回避したいのであれば、PHP5.3から使用できるようになった**「namespace」**を使用することもできます。
namespaceを利用することで、関数同士の衝突エラーを防ぐことが可能です。
namespaceを利用したコードは

`

<?php // Test/test.php namespace Test; function var_dump($input){ $input=empty($input)?'empty':$input; echo('It is private var_dump!! your input is '.$input); } // execute as Test\var_dump(); var_dump('test'); ` namespaceでTestを設定することにより、functionはnamespaceの中に設定されたvar_dumpとして動作するため It is private var_dump!! your input is test と、しっかり動いてくれるようになります。 加えて、var_dump()の出力制限についてです。 **そもそもvar_dump()には返り値がないので、出力した関数をそのまま利用できません。** ですので、いっそのこと変数に格納するのも1つの手と言えます。 【例】 ` <?php function get_str_var_dump($foo) { // 出力バッファリング開始 ob_start(); var_dump($foo); // バッファの内容を変数へ格納 $bar = ob_get_contents(); // 出力バッファを消去してバッファリング終了 ob_end_clean(); return $bar; } $a = array('Hello!','See you!'); echo sprintf("$a:[%s]\n", get_str_var_dump($a) ); ?>

`

【結果】
$a:[array(2) { [0]=> string(6) "Hello!" [1]=> string(8) "See you!" } ]
変数に格納することで、ある程度扱いやすくなります。

投稿2014/05/02 07:12

hokuto

総合スコア152

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問