将数组传递给函数php

将数组传递给函数php,php,arrays,forms,argument-passing,Php,Arrays,Forms,Argument Passing,我使用var_导出从html表单获取信息 $info = var_export($_POST); echo '<pre>'; $info; echo '</pre>'; $info=var\u导出($\u POST); 回声'; $info; 回声'; 当我打印$info的内容时,这是输出: 数组('name'=>'a','address'=>'b','city'=>'c','state'=>'d','zip'=>'1','phone'=>'2','open'=>'

我使用var_导出从html表单获取信息

$info = var_export($_POST);

echo '<pre>';
$info;
echo '</pre>';
$info=var\u导出($\u POST);
回声';
$info;
回声';
当我打印$info的内容时,这是输出:

数组('name'=>'a','address'=>'b','city'=>'c','state'=>'d','zip'=>'1','phone'=>'2','open'=>'3','close'=>'4',)

这是正确的,但当我将该变量传递给函数时:

function validate($data){
  echo "Hello";
  echo '<pre>';
  print_r($data);
  echo '</pre>';
}
validate($info);
函数验证($data){
回音“你好”;
回声';
$data;
回声';
}
并尝试再次打印内容,因为它不会打印任何内容。我知道它会进入函数,因为“Hello”会被打印出来。这里发生了什么

感谢您的帮助

试试这个:

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>';
}
函数验证($data){
回音“你好”;
回声';
打印(数据);
回声';
}

首先,仅将变量放在那里不会输出它(据我所知)
echo
ing它也不会工作,因为它只会输出类型
Array
。您将要使用或

什么都不做

尝试打印($data)或对于单个数组元素
echo$data['name']

另一种解决方案:

validate($info);
函数验证($data){
回音“你好”;
回声';
//开始捕获输出
ob_start();
//var_dump()输出字符串。
var_dump($数据);
//打印自上次调用ob_start()以来捕获的所有内容
echo ob_get_clean();
回声';
}

ob_start()开始捕获任何输出。ob_get_clean()将任何输出转储为字符串。这样做将准确地打印出在执行var_转储($data)时看到的内容。

var_导出
结合了将数组转换为字符串并打印数据的功能。您不能像处理
$info时那样,仅通过将变量放入脚本中来打印数据(或“回显”)

如果要按原样查看数组的内容,请按前面所述使用
print\r($array)
。如果要查看使用
var_export()
创建的字符串,请使用
echo$data

打印($data)
将无法正常工作,因为在您的案例中,
$data
不是数组,而是字符串

下面是我要做的:

函数验证($data){
回声“你好!”;
回声“;
打印(数据);
回声“;
}
验证($_POST);//因为您实际上必须在声明函数之后调用它

还有一件事-在
$info
中有
NULL
,我会尝试一下,但是为什么它在函数之外的早期工作?它被打印成htmlpage@Ameya:因为
var\u export
会打印它。你看过手册上的那一页了吗?你认为
var_export()
有什么作用?@zerkms我知道我把事情搞砸了,我相信var_export会自动返回变量表示,现在我知道它必须设置为true,谢谢你的帮助
$data;
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>';
}
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