我知道如何为我的问题编写解决方案,我只对编码它的最短路径感兴趣。那就是问题所在:
我正在解析一个URL,解析可以有3个结果,本地,分段或生产。我弄清楚它正在使用正则表达式。我在一个名为getServer()的函数中这样做。
现在在该函数中,我返回一个数组,该数组有3个元素,它们是0或1.如果第一个是1而另外两个是0,则意味着它是一个本地服务器。
现在当我拿回那个数组时,我仍然要编写一个if来查看哪个数组元素是1。
if($returnArrayFromFunction[0] == '1') {
// do the stuff for the local server case
}
if($returnArrayFromFunction[1] == '1') {
// do the stuff for the staging server case
}
if($returnArrayFromFunction[2] == '1') {
// do the stuff for the production server case
}
有没有办法缩短代码?
谢谢你的时间!
答案 0 :(得分:3)
为什么不在getServer()
中返回一个ID号?
$serverId = getServer();
switch ($serverId) {
case 0: // Local
// Code
break;
case 1: // Staging
// Code
break;
case 2: // Production
// Code
}
注意:强>
如果您需要在代码中的其他位置使用这些服务器ID,则可以通过使用define()
的命名约定来更容易地跟踪哪个ID对应于哪个服务器。这也可以使您的代码更易于阅读,从而更容易调试。
define('SERVER_LOCAL', 0);
define('SERVER_STAGING', 1);
define('SERVER_PRODUCTION', 2);
然后您可以使用以下内容替换上述开关:
switch ($serverId) {
case SERVER_LOCAL:
// Code
break;
case SERVER_STAGING:
// Code
break;
case SERVER_PRODUCTION:
// Code
}
答案 1 :(得分:3)
不要返回编码结果的索引值为1
的数组。定义三个常量
define('SERVER_LOCAL', 1);
define('SERVER_STAGING', 2);
define('SERVER_PRODUCTION', 4);
从代码中返回正确的常量,然后使用switch语句
switch($serverType) {
case(SERVER_LOCAL)::
DoStuffForLocalServer();
break;
case ...
如果简洁是您的目标,请将开关缩短为
$serverType == SERVER_LOCAL ? doLocal() : $serverType == SERVER_STAGING ? doStaging() : doProduction();
尽可能短,但是会不受欢迎: - )
答案 2 :(得分:1)
试试此代码
$case=array_search(1,$returnArrayFromFunction);
switch($case)
{
0:
break;
// do the stuff for the local server case
1:
break;
// do the stuff for the staging server case
2:
// do the stuff for the production server case
break;
}
答案 3 :(得分:0)
尝试
foreach($returnArrayFromFunction as $key=>$return)
{
if($return == '1')
{
switch($key)
{
case '0' : //Stuff at local
break;
case '1' : //Stuff at Staging
break;
case '2' : //Stuff at production
break;
}
}
}
答案 4 :(得分:0)
$code = join('', $returnArrayFromFunction );
//something like '111' / '010' / '110'
switch( $code ){
case '111':
//all values 1
break;
case '001':
//something else
break;
}
答案 5 :(得分:0)
您的getServer()
函数应该只返回一个值而不是数组。然后使用以下代码:
$serverId = getServer();
switch ($serverId) {
case 0: // local server
// Your code
break;
case 1: // testing server
// Your code
break;
case 2: // live server
// Your code
}