PHPプログラミングでは、 print_r()関数は非常に一般的なデバッグツールです。特にアレイとオブジェクトを印刷するために、変数の値と構造を出力するために使用できます。初心者にとっては、 print_r()関数の使用を理解することが非常に重要です。この記事では、基本的な使用法、一般的なアプリケーションシナリオ、およびより効率的に使用する方法を詳細に紹介します。
print_r()は、通常はデバッグに使用されるヒューマン読み取り可能な変数情報を出力するPHPの組み込み関数です。その主な機能は、変数のコンテンツと構造、特に配列とオブジェクトの表示効果を印刷することです。
<span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$variable</span></span><span>, </span><span><span class="hljs-variable">$return</span></span><span>);
</span></span>
$変数:出力である必要がある変数、通常は配列、オブジェクト、またはその他の変数タイプ。
$ return (オプション):このパラメーターは、結果を返すかどうかを決定するブール値です。 trueの場合、 print_r()は出力結果を文字列として返します。 false (デフォルト)の場合、結果は直接出力されます。
通常の変数を出力します
<span><span><span class="hljs-variable">$var</span></span><span> = </span><span><span class="hljs-string">"Hello, World!"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$var</span></span><span>);
</span></span>
出力:
<span><span>Hello, World!
</span></span>
出力配列
<span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">1</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">2</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-meta">3</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-meta">4</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>
上記のように、 print_r()は配列のキーと値を出力し、開発者が配列の構造を簡単に表示できるようにします。
出力連想配列
<span><span><span class="hljs-variable">$assocArray</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"John"</span></span><span>, </span><span><span class="hljs-string">"age"</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$assocArray</span></span><span>);
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">name</span></span><span>] => John
[</span><span><span class="hljs-meta">age</span></span><span>] => </span><span><span class="hljs-number">30</span></span><span>
)
</span></span>
出力多次元配列
<span><span><span class="hljs-variable">$multiArray</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"fruits"</span></span><span> => </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"cherry"</span></span><span>),
</span><span><span class="hljs-string">"vegetables"</span></span><span> => </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-string">"carrot"</span></span><span>, </span><span><span class="hljs-string">"potato"</span></span><span>)
);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$multiArray</span></span><span>);
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">fruits</span></span><span>] => Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => apple
[</span><span><span class="hljs-meta">1</span></span><span>] => banana
[</span><span><span class="hljs-meta">2</span></span><span>] => cherry
)
[</span><span><span class="hljs-meta">vegetables</span></span><span>] => Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => carrot
[</span><span><span class="hljs-meta">1</span></span><span>] => potato
)
)
</span></span>
上記の例から、 print_r()が多次元配列の内容を再帰的に出力し、配列のネストされた構造を示すことがわかります。
print_r() $ returnの2番目のパラメーターはデフォルトでfalseになります。つまり、コンテンツは直接出力されます。ストリングを直接印刷する代わりに、出力を文字列として返す場合は、2番目のパラメーターをtrueに設定できます。
<span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"cherry"</span></span><span>);
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Returned output: \n"</span></span><span> . </span><span><span class="hljs-variable">$result</span></span><span>;
</span></span>
出力:
<span><span>Returned output:
Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => apple
[</span><span><span class="hljs-meta">1</span></span><span>] => banana
[</span><span><span class="hljs-meta">2</span></span><span>] => cherry
)
</span></span>
print_r()とvar_dump()の両方を使用して出力変数をデバッグできますが、出力フォームは異なります。
print_r()はより簡潔で、配列とオブジェクトの内容を人間が読みやすい形式で表示します。
var_dump()出力データタイプ、長さなどを含むより詳細な情報は、デバッグ中のデータ型の厳密な検査に適しています。
例えば:
<span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">1</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">2</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
)
</span></span>
var_dump()の出力は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
出力:
<span><span>array(</span><span><span class="hljs-number">3</span></span><span>) {
[</span><span><span class="hljs-meta">0</span></span><span>] =>
</span><span><span class="hljs-built_in">int</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>)
[</span><span><span class="hljs-meta">1</span></span><span>] =>
</span><span><span class="hljs-built_in">int</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>)
[</span><span><span class="hljs-meta">2</span></span><span>] =>
</span><span><span class="hljs-built_in">int</span></span><span>(</span><span><span class="hljs-number">3</span></span><span>)
}
</span></span>
これから、 var_dump()が各要素のタイプとデータ値を出力し、 print_r()がより簡潔な方法で配列コンテンツを出力することがわかります。
デバッグ配列とオブジェクト構造
print_r()は、特に複雑なデータ構造をデバッグする場合、配列またはオブジェクトの構造をすばやく表示するのに最適です。従来のエコーやvar_dump()よりも読み、理解しやすいです。
出力JSONデータ構造
JSONデータを処理する場合、 print_r()を使用すると、解析された配列またはオブジェクトを表示できます。
<span><span><span class="hljs-variable">$jsonData</span></span><span> = </span><span><span class="hljs-string">'{"name": "John", "age": 30}'</span></span><span>;
</span><span><span class="hljs-variable">$decodedData</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_decode</span></span><span>(</span><span><span class="hljs-variable">$jsonData</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$decodedData</span></span><span>);
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">name</span></span><span>] => John
[</span><span><span class="hljs-meta">age</span></span><span>] => </span><span><span class="hljs-number">30</span></span><span>
)
</span></span>
投稿を印刷するか、リクエストデータを取得します
フォームデータを受信する場合、 print_r()は、渡されたデータが正しいかどうかを確認するのに役立ちます。
<span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>);
</span></span>
print_r()は非常に便利なPHP機能であり、特に開発段階でのデバッグに適しています。アレイとオブジェクトの構造を明確に表示できるため、開発者はデータのコンテンツをよりよく理解できます。 print_r()を柔軟に使用することにより、問題をすばやく見つけてコードを改善できます。
この記事が、print_r()関数の基本的な使用法をよりよく理解し、習得できることを願っています。