关于声明PHP变量的问题
据我所知,PHP有三种不同的变量作用域:关于声明PHP变量的问题,php,Php,据我所知,PHP有三种不同的变量作用域: 本地类$salt='x2x3x5' 全局类$GLOBALS['salt']='x2x3x5' 静态类static$salt='x2x3x5' 但我在一个在线教程中看到,讲师声明并使用了如下变量: $config['salt'] = 'x2x3x5'; 你能告诉我这是什么类型的变量吗?它的用途是什么?谢谢这不是变量,这是数组 数组名称[键]=“值”这是在数组中定义键/值对$config是一个数组,“salt”是该数组中的一个键。查看此处的文档:这是一个数
$salt='x2x3x5'代码>
$GLOBALS['salt']='x2x3x5'代码>
static$salt='x2x3x5'代码>
$config['salt'] = 'x2x3x5';
你能告诉我这是什么类型的变量吗?它的用途是什么?谢谢这不是变量,这是数组
数组名称[键]=“值”这是在数组中定义键/值对
$config
是一个数组,“salt”是该数组中的一个键。查看此处的文档:这是一个数组。该变量为数组类型,名称(引用)“$config”。索引为“salt”,值为“x2x3x5”
这是文件
在线文档是一个良好的开端: 但这里有一些澄清: 脚本的所有内容都在全局范围内
$salt = 'x2x3x5';
echo $GLOBALS['salt']; // outputs 'x2x3x5'
直到你把它变成一个函数
$salt = 'x2x3x5';
function something() {
$salt = '123';
return $salt;
}
echo something(); // output '123'
echo $salt; // output 'x2x3x5'
如果将其包装在类属性中,则相同
class something() {
public static $salt = '123';
}
$salt = 'x2x3x5';
echo something::$salt; // output '123'
echo $salt; // output 'x2x3x5'
最后,$config['salt']='x2x3x5'
使$config成为一个由键索引的值数组。此变量存在于定义的范围内(如果在全局范围内,或在函数/类/方法内,则为全局变量)
在这种情况下,你有充分的理由感到困惑! PHP有一种非常常用的数据结构,称为数组<在您的示例中,code>$config是一个非常普通的数组。数组允许您通过一个较短、易于键入的名称来寻址数据。通常,“数据”称为值,用于寻址的较短名称称为“键”。您可以在此处阅读有关阵列的更多信息: 您可能会感到困惑,因为
$GLOBALS
是一个特殊数组$GLOBALS
是特殊的,因为每当您声明一个普通变量时,它都会自动添加键,
如您的示例所示:$salt='x2x3x5'代码>
事实上,如果您运行以下代码:
$GLOBALS['salt'] = 'the salt!';
echo $salt;
然后你会回应“盐!”。这是因为,无论何时向globals添加键/值对,都会创建一个变量。反之亦然;如果运行此代码:
$salt = 'the salt!';
echo $GLOBALS['salt'];
然后你会回应“盐!”。这是因为定义变量时,还需要在特殊的$GLOBALS
数组中定义键/值对
希望这能给你一些启示 我认为您将数组与php变量混淆了。
这里的$config
是一个数组,它已在当前文件或php项目中的其他文件中定义。现在它可能在另一个文件中,这让你感到困惑。检查当前文件(包含$config['salt']='x2x3x5';
的文件)中包含了哪些文件,并在每个文件中查找$config
数组变量。我希望您能找到将$config变量定义为array的文件。它是一个数组。变量名为$config
,它有一个数组键salt
,它等于'x2x3x5'
。这与变量范围无关。
$salt = 'the salt!';
echo $GLOBALS['salt'];