将数组传递给函数php

问题描述:

我从使用var_export的html表单获取信息。将数组传递给函数php

$info = var_export($_POST); 

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

当我打印出的$信息的内容是这样的输出:

阵列( '姓名'=> '一个', '地址'=> 'B', '城市'=> 'c','state'=>'d','zip'=>'1','phone'=>'2','open'=>'3','close'=>'4',)

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

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

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

感谢所有帮助

+2

你觉得呢'var_export()'呢? – zerkms 2012-07-20 02:35:11

+1

@zerkms我看到我在哪里搞砸了,我相信var_export会自动返回变量表示,现在我发现它必须设置为true,谢谢你的帮助 – Ameya 2012-07-20 16:06:00

试试这个:

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

首先,只是把变量不会有输出它(据我所知)。 echo因为它只输出Array类型,所以它不起作用。您将要为使用var_dump()print_r()

$data; 

没有做任何事情。

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

+0

还有一件事 - 在''NULL' $ info' – zerkms 2012-07-20 02:34:59

+0

我会试一下,但为什么它早些时候在函数之外工作?它打印到HTML页面 – Ameya 2012-07-20 04:51:14

+0

@Ameya:因为'var_export'打印出来。你读过关于它的手册页吗? http://php.net/var_export – zerkms 2012-07-20 06:49:45

又一解决方案:

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)时看到的内容。

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