错误:第一个参数应该是一个数组

时间:2012-11-28 04:06:09

标签: php

我有这个代码,之前没有代码引用下面的任何变量。然而,我仍然无法找到为什么我得到错误:“第一个参数应该是......中的数组”

$array = array("element here for reason");

function sortdata()
{
    $File = fopen("Names.txt", "r");

    //put each file line into an array element
    while(!feof($File))
    {
        array_push($array, fgets($File));
    }
}

5 个答案:

答案 0 :(得分:4)

$array超出了该功能的范围。您可以使用global将其纳入范围。

$array = ..;
function sortdata() {
    global $array;
    ...
}
sortdata();

或者,您可以通过引用将其传递给函数。

$array = ..;
function sortdata(&$array) {
    ...
}
sortdata($array);

答案 1 :(得分:0)

您应该尝试首先初始化数组并将数组放在函数范围内,如下所示:

$array = array();
array_push($array, "element here for reason");

function sortdata()
{
    global $array;

    $File = fopen("Names.txt", "r");

    //put each file line into an array element
    while(!feof($File))
    {
        array_push($array, fgets($File));
    }
}

答案 2 :(得分:0)

代码的问题是你没有将$ array变量传递给函数。除此之外,使用快捷方式将项添加到数组而不是调用array_push会更有效,因为它消除了调用函数的开销。

$array = array("element here for reason");

function sortdata($array)
{
    $File = fopen("Names.txt", "r");

    //put each file line into an array element
    while(!feof($File))
    {
        $array[] = fgets($File);
    }

    return $array;
}

答案 3 :(得分:0)

你在函数体内使用变量$ array。在这种情况下,这是局部变量,它会自动设置为字符串。

要使用全局变量$ array,您应该在函数中使用指令 global

function sortdata() {
global $array;
/* there your code for work with $array */
}

答案 4 :(得分:0)

This give you backward compatibility

function sortdata(array $array = array())
{
    $File = fopen("Names.txt", "r");

    while(!feof($File))
    {
      array_push($array, fgets($File));
    }


    return $array;
}