0

私はこのコードを持っていますが、その前に以下に示す変数を参照するコードはありません。それでも、「最初の引数は配列である必要があります...」というエラーが発生する理由をまだ見つけることができません。

$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));
    }
}
4

5 に答える 5

4

$array関数の範囲外です。を使用してスコープに入れることができますglobal

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

または、参照によって関数に渡すこともできます。

$array = ..;
function sortdata(&$array) {
    ...
}
sortdata($array);
于 2012-11-28T04:09:58.120 に答える
0

関数本体内で変数 $array を使用します。この場合、これはローカル変数であり、自動的に文字列に設定されます。

グローバル変数 $array を使用するには、関数でグローバル命令を使用する必要があります。

function sortdata() {
global $array;
/* there your code for work with $array */
}
于 2012-11-28T04:16:50.107 に答える
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));
    }
}
于 2012-11-28T04:10:37.760 に答える
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;
}
于 2012-11-28T05:24:52.490 に答える
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;
}
于 2012-11-28T04:11:48.620 に答える