很抱歉有这么模糊的标题,但我不确定该怎么写。所以我正在练习我的PHP
技能,并编写了以下代码。
<?php
$FavPeople = array
(
'Sofia', 'Love of my life',
'Jesus', 'Savior of my soul',
'Austin', 'Favorite Nephew'
);
function randomPerson()
{
$total = count($FavPeople);
$ranNumber = rand(0, $total-1);
echo $FavPeople[$ranNumber] . '</br>';
}
randomPerson();
?>
运行时,$FavPeople
未定义或由于其全局作用域而不可访问。所以我说‘好吧,我就这么做:
global $FavPeople
在我的职责范围内。它不运行。相反,我得到一个空白屏幕,没有错误。
如果我将$FavPeople复制并粘贴到函数中,它是有效的,但在函数中键入全局$FavPerson会使它不起作用。为什么会这样?
我引用了注释做了一些小修改。您不需要将其指定为全局,只需在函数签名中进行幻灯片更改即可将其作为参数传递。
<?php
$FavPeople = array
(
'Sofia', 'Love of my life',
'Jesus', 'Savior of my soul',
'Austin', 'Favorite Nephew'
);
function randomPerson($FavPeople)
{
$total = count($FavPeople);
$ranNumber = rand(0, $total-1);
echo $FavPeople[$ranNumber] . '</br>';
}
randomPerson($FavPeople);
?>
输出
我一生的挚爱
重新加载
索菲亚
如果你想让它全球化,有两种方法。
1)
global $FavPeople;
function randomPerson()
{
$FavPeople = array
(
'Sofia', 'Love of my life',
'Jesus', 'Savior of my soul',
'Austin', 'Favorite Nephew'
);
$total = count($FavPeople);
$ranNumber = rand(0, $total-1);
echo $FavPeople[$ranNumber] . '</br>';
}
randomPerson();
2)
<?php
$FavPeople = array
(
'Sofia', 'Love of my life',
'Jesus', 'Savior of my soul',
'Austin', 'Favorite Nephew'
);
function randomPerson()
{
global $FavPeople;
$total = count($FavPeople);
$ranNumber = rand(0, $total-1);
echo $FavPeople[$ranNumber] . '</br>';
}
randomPerson();
我描述的两种方式是一样的,第一种似乎更正确,因为代码很清楚。如果你在一个函数中声明了一个全局变量,一年或一段时间后,如果代码太长,你会感到困惑。
它还指出,你没有正确使用全局。
检查此项:-https://eval.in/543767
只需在函数中的变量之前添加global即可。
function randomPerson(){
global $FavPeople; // Add this
$total = count($FavPeople);
$ranNumber = rand(0, $total-1);
echo $FavPeople[$ranNumber] . '</br>';
}
希望这能有所帮助。
<?php
$FavPeople = array
(
'Sofia', 'Love of my life',
'Jesus', 'Savior of my soul',
'Austin', 'Favorite Nephew'
);
function randomPerson()
{
global $FavPeople ;
$total = count($FavPeople);
$ranNumber = rand(0, $total-1);
echo $FavPeople[$ranNumber] . '</br>';
}
randomPerson();
?>