-1

var_export を使用して HTML フォームから情報を取得しています。

$info = var_export($_POST);

echo '<pre>';
$info;
echo '</pre>';

$info の内容を出力すると、次のようになります。

配列 ( 'name' => 'a', 'address' => 'b', 'city' => 'c', 'state' => 'd', 'zip' => '1', 'phone' => '2', '開く' => '3', '閉じる' => '4', )

これは正しいですが、その変数を関数に渡すと:

validate($info);
function validate($data){
    echo "Hello";
    echo '<pre>';
    $data;
    echo '</pre>';
}

内容をもう一度印刷しようとすると、何も印刷されません。「Hello」が出力されるため、関数に入ることはわかっています。ここで何が起きてるの?

助けてくれてありがとう

4

5 に答える 5

3

これを試して:

function validate($data){
  echo "Hello";
  echo '<pre>';
  print_r($data);
  echo '</pre>';
}
于 2012-07-20T02:33:03.040 に答える
3
$data;

何もしません。

print_r($data);個々の配列要素に対して or を試してくださいecho $data['name'];

于 2012-07-20T02:33:29.870 に答える
1

まず、変数をそこに置くだけでは出力されません(私の知る限り)。 echotype を出力するだけなので、どちらも機能しませんArrayvar_dump()またはのいずれかを使用する必要がありますprint_r()

于 2012-07-20T02:33:10.750 に答える
0

さらに別の解決策:

validate($info);
function validate($data){
    echo "Hello";
    echo '<pre>';

    // Start capturing output
    ob_start();

    // var_dump() outputs the string.
    var_dump( $data );

    // print out everything captured since last call to ob_start()
    echo ob_get_clean();

    echo '</pre>';
}

ob_start() は、出力のキャプチャを開始します。ob_get_clean() は、すべての出力を文字列にダンプします。これを行うと、var_dump( $data ) を実行したときに表示される内容が正確に出力されます。

于 2012-07-20T02:38:36.887 に答える
0

var_export配列を文字列に変換し、データを出力する機能を組み合わせます。行で行っているように、スクリプトに変数を配置するだけでは、データを印刷 (または「エコー」) することはできません$info;

配列の内容をそのまま表示したい場合は、前述のように使用print_r($array)します。を使用して作成した文字列を表示する場合はvar_export()、 を使用しますecho $data;

print_r($data);$dataあなたの場合は配列ではなく文字列であるため、述べられているように機能しません。

これが私がすることです:

function validate($data){
    echo "Hello!";
    echo "<pre>";
    print_r($data);
    echo "</pre>";
}

validate($_POST); // since you actually must call the function after it's been declared
于 2012-07-20T02:41:56.783 に答える