PHP全局声明
我使用PHP的全局声明使数组可用于脚本中的许多函数。变量在脚本顶部声明,并在使用它的每个函数中用global引用,如下所示:PHP全局声明,php,Php,我使用PHP的全局声明使数组可用于脚本中的许多函数。变量在脚本顶部声明,并在使用它的每个函数中用global引用,如下所示: <?php $myarray = array(1, 2, 3); function print_my_array() { global $myarray; print '<ul>'; foreach($myarray as $entry) { print '<li>'.$entry.'</l
<?php
$myarray = array(1, 2, 3);
function print_my_array() {
global $myarray;
print '<ul>';
foreach($myarray as $entry) {
print '<li>'.$entry.'</li>';
}
print '</ul>';
return 0;
}
print_my_array();
?>
有时,但并非总是,调用函数时未设置数组,在调用foreach时生成错误。在实际代码中,所使用的数组被赋予了一个非常唯一的名称,因此不应与任何其他数组发生冲突。我是否误用了全局声明?否,代码片段是正确的。您遇到的问题是使用全局变量的问题–它们可以从任何地方访问和更改(可能是偶然的),从而产生难以发现的错误。不,代码片段是正确的。您遇到的问题是使用全局变量的问题–它们可以从任何地方访问和更改(可能是偶然的),从而产生难以发现的错误。在运行foreach之前,您至少可以检查函数顶部的数组是否为空。这至少可以防止出现错误:
function print_my_array() {
global $myarray;
if(!empty($myarray)) {
print '<ul>';
foreach($myarray as $entry) {
print '<li>'.$entry.'</li>';
}
print '</ul>';
}
}
函数打印我的数组(){
全球$myarray;
如果(!empty($myarray)){
打印“”;
foreach($myarray作为$entry){
打印“- ”.$entry.“
”;
}
打印“
”;
}
}
而且,我不会只返回0。您可能希望将数组是否为空合并到此函数返回的内容中。在运行foreach之前,您至少可以检查函数顶部的数组是否为空。这至少可以防止出现错误:
function print_my_array() {
global $myarray;
if(!empty($myarray)) {
print '<ul>';
foreach($myarray as $entry) {
print '<li>'.$entry.'</li>';
}
print '</ul>';
}
}
函数打印我的数组(){
全球$myarray;
如果(!empty($myarray)){
打印“”;
foreach($myarray作为$entry){
打印“- ”.$entry.“
”;
}
打印“
”;
}
}
而且,我不会只返回0。您可能希望将数组是否为空合并到此函数返回的内容中。通过使用globals,您可以找到许多问题,它们也会降低代码的可重用性 下面是一个可以在整个站点多次重复使用的函数示例 (未经测试)
通过使用globals,您可以找到很多问题,它们也会降低代码的可重用性
下面是一个可以在整个站点多次重复使用的函数示例
(未经测试)
简而言之,您只需这样声明:
$myarray = array();
如果要用值填充它,请在类构造函数中执行此操作:
public function __construct(){
$myarray = array(1,2,3);
}
我不是大师,但根据我的经验,php似乎不喜欢在类中的函数之外执行函数调用
这不起作用:
class MyClass {
public $mystring = myfunction();
public function myFunction(){
return true; //and your function code
}
}
因此,当您使用array()时,它实际上不会触发任何函数调用,它只是创建一个array类型的空变量。当您使用数组(1,2,3)时,它必须有效地运行类似于函数的“创建数组”
我知道这很烦人,我希望它与众不同,但我不知道用php做什么的方法。让我知道如果有一个很好的方式,我喜欢听它
简而言之,您只需这样声明:
$myarray = array();
如果要用值填充它,请在类构造函数中执行此操作:
public function __construct(){
$myarray = array(1,2,3);
}
我不是大师,但根据我的经验,php似乎不喜欢在类中的函数之外执行函数调用
这不起作用:
class MyClass {
public $mystring = myfunction();
public function myFunction(){
return true; //and your function code
}
}
因此,当您使用array()时,它实际上不会触发任何函数调用,它只是创建一个array类型的空变量。当您使用数组(1,2,3)时,它必须有效地运行类似于函数的“创建数组”
我知道这很烦人,我希望它与众不同,但我不知道用php做什么的方法。让我知道如果有一个很好的方式,我喜欢听它 这是一件明智的事情,但我需要定义该数组,以便脚本的其余部分正常工作。不定义它不是一个选项。这是一个明智的做法,但我需要定义该数组,以便脚本的其余部分工作。不定义它不是一个选项。一般来说,我同意你的看法,但这个“全局”变量实际上只在一个脚本中的一个位置使用过。为什么不在这里定义它呢?它需要在脚本顶部的一个可见点中定义,但它是以隐藏在页面下方的点的方式使用的。在其他地方使用或访问的可能性是零,所以我仍然认为我的问题没有答案。再说一遍,你的代码是正确的。数组有时可能为空的唯一方法是,如果在定义和对print\u my\u array
的任何调用之间的过渡期间发生了什么事情。一般来说,我同意你的看法,但这个“全局”变量实际上只在一个位置的一个脚本中使用。为什么不在这里定义它呢?它需要在脚本顶部的一个可见点中定义,但它是以隐藏在页面下方的点的方式使用的。在其他地方使用或访问的可能性是零,所以我仍然认为我的问题没有答案。再说一遍,你的代码是正确的。数组有时可能为空的唯一方法是,如果在定义和对print\u my\u array
的任何调用之间的过渡期间发生了什么事情。我最终只是定义了一个函数,该函数返回了有问题的数组。这保护了该函数范围内的数组,但允许我在需要的地方定义它。我最终只是定义了一个返回有问题数组的函数。这保护了该函数范围内的数组,但允许我在需要的地方定义它。