我有这个代码,之前没有代码引用下面的任何变量。然而,我仍然无法找到为什么我得到错误:“第一个参数应该是......中的数组”
$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));
}
}
答案 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;
}