Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP全局声明_Php - Fatal编程技术网

PHP全局声明

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的全局声明使数组可用于脚本中的许多函数。变量在脚本顶部声明,并在使用它的每个函数中用global引用,如下所示:

<?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
的任何调用之间的过渡期间发生了什么事情。我最终只是定义了一个函数,该函数返回了有问题的数组。这保护了该函数范围内的数组,但允许我在需要的地方定义它。我最终只是定义了一个返回有问题数组的函数。这保护了该函数范围内的数组,但允许我在需要的地方定义它。