PHP需要一次变量作用域
考虑以下情况- 文件:array.phpPHP需要一次变量作用域,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);
<?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