将数组传递给函数php

时间:2012-07-20 02:31:23

标签: php arrays forms argument-passing

我使用var_export从html表单获取信息。

$info = var_export($_POST);

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

当我打印出$ info的内容时,这是输出:

array('name'=&gt;'a','address'=&gt;'b','city'=&gt;'c','state'=&gt;'d','zip'=&gt ;'1','手机'=&gt;'2','打开'=&gt;'3','关闭'=&gt;'4',)

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

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

并尝试再次打印内容,它不会打印任何内容。我知道它会进入函数,因为“Hello”会打印出来。这里发生了什么?

感谢您的帮助

5 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:3)

$data;

什么都不做。

尝试print_r($data);或单个数组元素echo $data['name'];

答案 2 :(得分:1)

首先,只是把变量放在那里就不会输出它(据我所知)。 echo它不起作用,因为它只输出类型Array。您需要使用var_dump()print_r()

答案 3 :(得分: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)时所看到的内容。

答案 4 :(得分: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