如何用PHP编写速记设置器?
我很好奇有没有一种用PHP编写速记设置程序的方法。在编写代码时,我的主要任务是使代码尽可能紧凑,我认为以下内容有点麻烦:如何用PHP编写速记设置器?,php,shortcuts,Php,Shortcuts,我很好奇有没有一种用PHP编写速记设置程序的方法。在编写代码时,我的主要任务是使代码尽可能紧凑,我认为以下内容有点麻烦: $value = "Which array do I go in?"; if(true) $arr_1[] = $value; else $arr_2[] = $value; 有没有更好的写作方法?如果出现以下情况,我尝试使用速记: (true)?$arr_1[]:$arr_2[] = "Which array do I go in?"; 但这似乎不起作用
$value = "Which array do I go in?";
if(true)
$arr_1[] = $value;
else
$arr_2[] = $value;
有没有更好的写作方法?如果出现以下情况,我尝试使用速记:
(true)?$arr_1[]:$arr_2[] = "Which array do I go in?";
但这似乎不起作用。对于这种情况,有人有什么很酷的技巧吗
谢谢 你要做的事没有速记法。您还应该认识到,使代码尽可能紧凑往往以可读性为代价 编辑:有一些丑陋的黑客做什么你想,但我强烈建议反对。例如:
$GLOBALS[cond ? 'varname1' : 'varname2'] = $value;
另一个黑客可能是:
$arr = ($cond ? &$arr_1 : &$arr_2);
$arr[] = 'Which array do I go in';
$cond ? $arr_1[] = $value : $arr_2[] = $value;
它有两行代码,但不需要全局代码,可以在函数中工作。然而,为了可读性,最好使用if语句。注意:&是对变量的引用,这就是它工作的原因。另一个可能让您了解三元运算符工作原理的方法是:
$arr = ($cond ? &$arr_1 : &$arr_2);
$arr[] = 'Which array do I go in';
$cond ? $arr_1[] = $value : $arr_2[] = $value;
您可以看到,三元运算符仅计算运行在右侧的成功计算的代码路径?如果为true,则在:if false的右侧。但是,如果您认为这比使用“if”更快,那么您的“不太紧凑”代码将实际执行 另一个选项,例如,如果您不能/不想使用globals
${$cond?'arr_1':'arr_2'}[] = $value;
$cond==true$arr['first'][]=$value:$arr['second'][]=$value;大概为什么一开始是两个不同的变量?不要把紧密和有效混淆。。。正常情况下,紧凑意味着高效的代码,这并不意味着源文件中的字符数尽可能少。我觉得可以自由地投我一票,但在生产环境中,这种速记手段没有任何位置,因为有一天其他人将不得不剖析你的代码。这件可怕的事情是怎么在45分钟内得到6票的?!我同意西奥多的观点,不要吹毛求疵,但使用GLOBALS不是不受欢迎吗?@thiesdiggity该死的直截了当!如果我在我的工作中看到这段代码,请准备好面对一些麻烦。+1表示三元性能实际上较慢