【问题标题】:Whats the use of & in function parameters? [duplicate]函数参数中的&有什么用? [复制]
【发布时间】:2016-09-02 00:42:16
【问题描述】:

我在关于如何在 PHP 中导入 excel 的教程中找到了这个,但我在互联网上找不到它在函数参数中 & 的用途是什么?

代码如下:

<?php
    $data = array(
        array("First Name" => "Nitya", "Last Name" => "Maity", "Email" => "nityamaity87@gmail.com", "Message" => "Test message by Nitya"),
    );

    function filterData(&$str) <--------------THIS LINE--------<
    {
        $str = preg_replace("/\t/", "\\t", $str);
        $str = preg_replace("/\r?\n/", "\\n", $str);
        if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
    }

    // file name for download
    $fileName = "codexworld_export_data" . date('Ymd') . ".xls";

    // headers for download
    header("Content-Disposition: attachment; filename=\"$fileName\"");
    header("Content-Type: application/vnd.ms-excel");

    $flag = false;
    foreach($data as $row) {
        if(!$flag) {
            // display column names as first row
            echo implode("\t", array_keys($row)) . "\n";
            $flag = true;
        }
        // filter data
        array_walk($row, 'filterData');
        echo implode("\t", array_values($row)) . "\n";
    }

    exit;
?>

编辑

这条线和function filterData($params)一样吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    使用“&”,您通过引用而不是值传递变量

    http://php.net/manual/en/language.references.pass.php

    不,不一样

    <?php
    
    function filterData(&$str) 
    {
        $str .= "new";
    }
    $a = "Hello";
    filterData($a);
    echo $a;
    ?>
    

    在这种情况下,系统会打印 Hellonew

    当您使用“&”时,您对变量所做的每一次更改即使在函数之外仍然有效。 但是请看一下链接,因为我的解释很短且不完整(应该有利于您了解参考和价值之间的区别,即使是性能和安全问题)

    【讨论】:

    • 检查我编辑的问题
    • 我已经为你编辑了我原来的答案
    猜你喜欢
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2023-03-27
    • 2019-08-26
    • 2017-06-03
    相关资源
    最近更新 更多