2

重複の可能性:
print_r の結果を変数に入れる

次のように、例外をスローし、例外に変数を含めようとしています。

throw new Exception('Oh no, an exception! ' . $variable);

$variable(配列はどこですか)

問題は、これは私のログファイルに次のものしか入れないということです:

いいえ、例外です!配列

残念ながら、私は PHP の専門家ではありません。これは、次の 2 つのいずれかを意味する可能性があると推測しています。

1) $variable は空の配列です

2) $varialbe はデータを含む配列ですが、例外でそのまま出力すると、その内容のすべてが出力されるわけではありません

ここで 1) が該当するかどうかをお知らせください (そうでないことを願っています)。

ただし、2) の場合、どうすれば についての詳細情報を入手できます$variableか? print_r次のように例外を実行またはvar_dump内部で実行することは可能ですか:

throw new Exception('Oh no, an exception! ' . print_r($variable));

それとも問題を引き起こしますか?

4

3 に答える 3

9

それとも問題を引き起こしますか?

はい、そうなります。は、文字列が完全に構築される前に評価され、メッセージprint_rを出力しようとすると、出力は次のようになります。Exception

配列
(
    [×] => 5
    [y] => 65
)
いや、例外!1

print_rこれを修正するには、の$returnパラメータを に設定しtrueて、エコーではなく値が返されるようにする必要があります。

throw new Exception('Oh no, an exception! ' . print_r($variable, true));
于 2012-12-07T14:58:37.350 に答える
6

2 番目の引数 true を使用して、即時に出力する代わりに出力を返します。

print_r($variable, true)

ドキュメンテーションはあなたの友達です

于 2012-12-07T14:58:49.640 に答える
4

ドキュメントをprint_r見ると、2 番目の引数が真である場合、関数は情報をすぐに出力するのではなく、文字列として返すことがわかります。

于 2012-12-07T14:58:42.947 に答える