PHPで配列をエコーまたは印刷する方法は?


198

私はこの配列を持っています

Array
(
  [data] => Array
    (
      [0] => Array
        (
          [page_id] => 204725966262837
          [type] => WEBSITE
        )

      [1] => Array
        (
          [page_id] => 163703342377960
          [type] => COMMUNITY
        )
      )
)

私の質問は、この構造なしでコンテンツをエコーする方法ですか?私は試した

foreach ($results as $result) {
    echo $result->type; 
    echo "<br>";
} 

回答:



467

使用できる配列の内容確認するには。

1) print_r($array); または、適切にフォーマットされた配列が必要な場合:

echo '<pre>'; print_r($array); echo '</pre>';

2)var_dump($array)データ型や長さなど、配列内のコンテンツの詳細情報を取得するために使用します。

3) PHPを使用して配列をループしforeach();、目的の出力を取得できます。PHPのドキュメントWebサイトのforeachに関する詳細情報:http :
//in3.php.net/manual/en/control-structures.foreach.php


2
素敵でエレガント。#1の終了タグを<pre />から</ pre>に変更することができます。
Michael

1
この回答は、OPが行った間違いには対応していません。
Shiplu Mokaddim 2014年

2
<pre> </ pre>コンストラクトがどのようにしてこの表示を「適切に」表示するかを説明できますか?
ロビンアンドリュース

1
@Robin <pre>タグは、print_r()が出力する新しい行と表を表示します。<pre>がないと、乱雑なフォーマットされていないデータの境界が表示されます。フォーマットされていることを確認するには、htmlページのソースを表示する必要があります。
jc 2016

96

フォーマットなしでコンテンツを知りたいだけの場合(デバッグ目的など)、これを使用します。

echo json_encode($anArray);

これにより、JSONとして表示され、人間が判読できるようになります。


html - phpCordova InAppBrowser executeScriptメソッドを使用してドキュメントからデータを抽出したかったのjson_encode($array)ですが、それができなかったのです!@Mark E
Hamid Araghi

31

それぞれが機能を持つ配列コンテンツを印刷するための複数の機能があります。

print_r()

変数に関する人間が読める情報を出力します。

$arr = ["a", "b", "c"];
echo "<pre>";
print_r($arr);
echo "</pre>";
Array
(
    [0] => a
    [1] => b
    [2] => c
)


var_dump()

タイプと値を含む式に関する構造化された情報を表示します。

echo "<pre>";
var_dump($arr);
echo "</pre>";
array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
}


var_export()

返された表現が有効なPHPコードである、指定された変数に関する構造化情報を表示します。

echo "<pre>";
var_export($arr);
echo "</pre>";
array (
  0 => 'a',
  1 => 'b',
  2 => 'c',
)

ブラウザは複数の空白文字(改行を含む)を単一のスペース(answer)に圧縮する<pre></pre>ため、結果を正しい形式で表示するには、上記の関数をラップする必要があります。


また、特定の条件で配列の内容を印刷する別の方法もあります。

echo

1つ以上の文字列を出力します。そのため、を使用して配列の内容を印刷する場合はecho、配列をループしてループ内で使用echoして配列項目を印刷する必要があります。

foreach ($arr as $key=>$item){
    echo "$key => $item <br>";
}
0 => a 
1 => b 
2 => c 

24

あなたは使うことができますprint_rvar_dumpそしてvar_export PHPのfuncations:

print_r:人間が読みやすい形式に変換

<?php
echo "<pre>";
 print_r($results); 
echo "</pre>";
?>

var_dump():モノの種類とその内容を表示します。

var_dump($results);

foreach loop:for eachループを使用すると、配列のすべての値を反復できます。

foreach($results['data'] as $result) {
    echo $result['type'].'<br>';
}


17
foreach($results['data'] as $result) {
    echo $result['type'], '<br />';
}

または echo $results['data'][1]['type'];


これありがとう。たとえば、配列のタイプのみをエコーする方法を教えてください[1]?
EnexoOnoma 2012年

アレイ[1]とはどういう意味ですか?:o
Andreas Wong

@andreas COMMUNITYまたは163703342377960のみをエコーし​​たい。アレイのコンテンツ全体ではなく、具体的に
EnexoOnoma

試してみるecho $results['data'][1]['page_id'];
Andreas Wong

8

データを配列に表示するためにforループを配置する必要はありません。次の方法で簡単に実行できます

<?php
echo "<pre>";
 print_r($results); 
echo "</pre>";
?>

3

私はこれが古い質問であることを知っていますが、解析可能なPHP表現が必要な場合は、次のように使用できます。

$parseablePhpCode = var_export($yourVariable,true);

エクスポートされたコードを(returnステートメントを使用して)file.phpにエコーする場合、次のように必要になることがあります。

$yourVariable = require('file.php');

0

しかし、私は答えを確認しましたが、PHPは(それぞれに対して)非推奨であり、最新のphpバージョンでは動作しません。

通常、配列を文字列に変換して、どこかにログを記録します(デバッグやテストなど)。

私は次のようにして配列を文字列に変換します:

$Output = implode(",", $SourceArray);

一方:

$ outputは結果です(文字列が生成される場所)

"、":セパレーター(各配列フィールドの間)

$ SourceArray:はソース配列です。

これが役に立てば幸い


-2

ループして、連想配列のすべての値を出力しforeachます。次のようにループを使用できます。

foreach($results as $x => $value) {
    echo $value;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.