为什么我的变量在函数内部未定义

时间:2013-11-27 22:23:36

标签: php function undefined

它给了我这个错误注意:未定义的变量:newfile 当然它也给了我 fwrite()期望参数1是资源,null给定原因第一个错误。我做错了什么?

$file = fopen("mycsv.csv", 'r');
$newfile = fopen("myjson.txt", 'w');

function write($text, $tab) {
    $tabs = "";
    for ($index = 0; $index < $tab; $index++) {
        $tabs .= "\t";
    }
    fwrite($newfile, $text."\n".$tabs); //error here
}

4 个答案:

答案 0 :(得分:3)

阅读手册中的variable scope

$ file和$ newfile是全局的,因此在您的函数中无法在本地访问$ newfile。将其移入函数,将其作为参数传递或作为最后的手段在函数中将其声明为全局

答案 1 :(得分:0)

你需要使$newfile全局能够在函数范围内使用它:

function write($text, $tab) {
    global $newfile;
    // ... the rest
}

答案 2 :(得分:0)

函数内使用的任何变量默认都限制在本地函数范围内。

请参阅:http://php.net/manual/en/language.variables.scope.php

如果将$ newfile设为全局变量或将其作为另一个函数参数传递,则可以执行所需的操作。

答案 3 :(得分:0)

功能超出范围。您可以将打开的文档直接发送到函数,以便在函数范围内使用它。

function write($newfile,$text,$tab){
//the rest of your code
}

$returned = write($newfile,$text,$tab);