我正在写一个脚本,它会多次从输入文件中的单词中选择一个随机单词.现在调用file()多次似乎效率低下,所以我想要为文件中的单词设置一个全局数组,并将一个函数加载到数组中(在选择随机单词之前调用).为什么不起作用?
global $words;
function init_words($file)
{
$words = file($file);
$count = count($words);
echo "$count words<br>\n"; // "3 words"
}
init_words("/foo/bar");
$count = count($words);
echo "$count words<br>\n"; // "0 words"
Run Code Online (Sandbox Code Playgroud)
您需要$words在函数本身内声明全局.看到:
$words = '';
function init_words($file)
{
global $words;
$words = file($file);
$count = count($words);
echo "$count words<br>\n"; // "3 words"
}
Run Code Online (Sandbox Code Playgroud)
我建议你查看PHP手册中的变量范围章节.
另外,我绝不会以这种方式编写这段代码.除非绝对必要,否则避免使用全局变量.
我会以这种方式编写代码以避免此问题:
function init_words($file)
{
$words = file($file);
$count = count($words);
echo "$count words<br>\n"; // "3 words"
return $words;
}
$words = init_words("/foo/bar");
$count = count($words);
echo "$count words<br>\n"; // "3 words"
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅PHP手册中的返回值章节.