Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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,考虑以下情况- 文件:array.php <?php $array1 = array(); $array1['name'] = "Adam"; $array1['gender'] = "Male"; $array1['age'] = 34; <?php function printArrayContent(){ require_once 'array.php'; var_dump($array1);

考虑以下情况-

文件:array.php

<?php
    $array1 = array();
    $array1['name'] = "Adam";
    $array1['gender'] = "Male";
    $array1['age'] = 34;
<?php 
    function printArrayContent(){
        require_once 'array.php';
        var_dump($array1);
    }
printArrayContent();

include_once "file2.php";

为什么我无法访问
文件2中的
$array1
?此问题的解决方案是什么(除了在
$GLOBALS
变量中存储
$array1

要求一次包含一个相同的文件。由于您已经将其包含在
file1.php
中,php引擎下次不会将其包含在
file2.php
中,因此您无法访问file2.php范围中的变量。

不如说:
包含
包含
将按预期工作。但是,假设我需要100个不同文件中的变量
$array1
。除了将其包含在所有100个文件中之外,没有其他方法了吗?因为
include
将再次读取和解析文件。您可以编写OOP代码并进行自动加载,也可以使用php.ini auto.prepend始终包含一个文件,或者必须将其包含在所有100个文件中。
除了将$array1存储在$GLOBALS变量中
之外,您可以使用一种保存全局API数据的注册表实例(非全局变量)
<?php 
    require_once "array.php";
    echo "File 2";
    print_r($array1);
array(3) {
 'name' =>
 string(4) "Adam"
 'gender' =>
 string(4) "Male"
 'age' =>
 int(34)
}
File 2PHP Notice:  Undefined variable: array1 in /private/tmp/file2.php on line 4
PHP Stack trace:
PHP   1. {main}() /private/tmp/file1.php:0
PHP   2. include_once() /private/tmp/file1.php:11

Notice: Undefined variable: array1 in /private/tmp/file2.php on line 4

Call Stack:
 0.0212     230512   1. {main}() /private/tmp/file1.php:0
 0.0226     232424   2. include_once('/private/tmp/file2.php') /private/tmp/file1.php:11