例如50个美国。现在我只在一个函数中使用50个状态:
函数getStateInput(){$states=数组('AL'=>'Alaba','AK'=<'Alaska','AZ'=>'亚利桑那州等);//使用$states}
或者,您可以在自己的states.php中定义$states
,然后像这样使用它:
函数getStateInput(){include("states.php");//使用$states}
但出于某种原因,这让我很害怕,因为我正在使用include来定义局部函数变量。另一种方法是在states.php中将状态数组分配给超全局(例如,我可以使用$_ENV['states']
)。然后我可以去:
include('states.php');函数getStateInput(){//使用$_ENV["状态"]}
这是最好的方法之一,还是有其他更好的方法?
常见的方法是分离关注点。例如,你可以有自己的类和地址相关的方法。这个类将是存储关于可能状态的信息的自然位置,比如:
class Address {
static STATES = array(
'AL' => 'Alabama',
'AK' => 'Alaska',
'AZ' => 'Arizona',
// ...
);
}
// and then you can use it somewhere like that:
echo Address::$STATES['AL'];
为什么不让include文件有一个返回状态数组的函数呢。然后在其他代码中使用该数组。这样就不会处理任何范围变量。
// states.php
function getStates() {
return $states;
}
// other.php
function getStateInput() {
include('states.php');
$states = getStates();
// Do stuff with $states
}
在您的include.php
文件中(您必须包含此文件。在函数声明之前包含它):
$states = array('GA' => 'Georgia', 'SC' => 'South Carolina');
在您的脚本上:
include("include.php");
global $states;
function GetStateInput() {
///States are already available as $states
}
祝你好运!
我可能会这样做
include.php
<?php
$array = array();
$array['foo'] = 'bar';
$array['oof'] = 'rab';
... etc.
return $array;
?>
框架.php
<?php
// previous stuff
function getStateInput()
{
static $a = NULL;
if($a === NULL)
$a = include('include.php');
// do whatever
return $a;
}
// other stuff
?>
要么这样,要么只在函数中定义数组。这将取决于数组的大小以及api的其余部分的大小。如果将数组移到外部文件中的维护变得容易多了,那就去做吧。如果你在多个不同的函数或方法中使用数组,那就把它取出来。等等。你知道演习。
PHP优化了文件包含,所以如果不动态包含,就不用太担心性能。