Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用PHP编写速记设置器?_Php_Shortcuts - Fatal编程技术网

如何用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?"; 但这似乎不起作用

我很好奇有没有一种用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?";
但这似乎不起作用。对于这种情况,有人有什么很酷的技巧吗


谢谢

你要做的事没有速记法。您还应该认识到,使代码尽可能紧凑往往以可读性为代价

编辑:有一些丑陋的黑客做什么你想,但我强烈建议反对。例如:

$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表示三元性能实际上较慢