【问题标题】:passing array to a function php将数组传递给函数php
【发布时间】:2012-07-19 07:11:23
【问题描述】:

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

$info = var_export($_POST);

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

当我打印出 $info 的内容时,输出如下:

array ( 'name' => 'a', 'address' => 'b', 'city' => 'c', 'state' => 'd', 'zip' => '1', '电话' => '2', '打开' => '3', '关闭' => '4', )

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

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

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

感谢您的帮助

【问题讨论】:

  • 你认为var_export() 是做什么的?
  • @zerkms 我看到我搞砸了,我相信 var_export 自动返回了变量表示,现在我看到它必须设置为 true,谢谢你的帮助

标签: php arrays forms argument-passing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    另一个解决方案:

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

    【讨论】:

      【解决方案3】:
      $data;
      

      什么都不做。

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

      【讨论】:

      • 还有一件事——$info中有NULL
      • 我会尝试,但为什么它在函数之外更早地工作?它打印到 html 页面
      • @Ameya:因为var_export 打印了那个。您是否阅读过有关它的手册页? php.net/var_export
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        试试这个:

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

        【讨论】:

          猜你喜欢
          • 2013-01-16
          • 2012-06-01
          • 1970-01-01
          • 2013-07-05
          • 1970-01-01
          • 2017-11-07
          • 2020-07-28
          • 2011-06-20
          相关资源
          最近更新 更多