PHP:如何缩短代码?
我知道如何为我的问题编写解决方案,我只是对编写解决方案的最短方法感兴趣。这就是问题所在: 我正在解析一个URL,解析可以有3个结果,本地、暂存或生产。我知道它使用的是正则表达式。我在一个名为getServer()的函数中实现了这一点 现在在这个函数中,我返回一个数组,它有3个元素,要么是0,要么是1。如果第一个是1,另外两个是0,这意味着它是一个本地服务器 现在,当我得到那个数组时,我仍然需要写一个if,看看哪个数组元素是1PHP:如何缩短代码?,php,Php,我知道如何为我的问题编写解决方案,我只是对编写解决方案的最短方法感兴趣。这就是问题所在: 我正在解析一个URL,解析可以有3个结果,本地、暂存或生产。我知道它使用的是正则表达式。我在一个名为getServer()的函数中实现了这一点 现在在这个函数中,我返回一个数组,它有3个元素,要么是0,要么是1。如果第一个是1,另外两个是0,这意味着它是一个本地服务器 现在,当我得到那个数组时,我仍然需要写一个if,看看哪个数组元素是1 if($returnArrayFromFunction[0] == '
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
}
有没有办法缩短代码
谢谢你的时间 为什么不在
getServer()
中返回一个id号呢
注意:
如果您需要在代码中的其他地方使用这些服务器id,那么通过使用命名约定跟踪哪个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
}
试着
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;
}
}
}
试试这个代码
$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;
}
不要返回索引值为编码结果的
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();
尽可能短,但很可能会被反对:-)您的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
}
为什么函数
getServer()
只返回数组而不是1个值呢?switch('1'){case$returnArray[0]:/**/;case$returnArray[1]:/**/;…}
?@u mulder:该值应该是什么?@user1856596它可以是整数(0表示本地,1表示暂存,2表示生产)或字符串('local'或'staging'或'production'))@数据顺序类似于yoda开关语句。
$serverType == SERVER_LOCAL ? doLocal() : $serverType == SERVER_STAGING ? doStaging() : doProduction();
$serverId = getServer();
switch ($serverId) {
case 0: // local server
// Your code
break;
case 1: // testing server
// Your code
break;
case 2: // live server
// Your code
}