正确的方式来声明PHP中的多个variables
我已经在PHP中编写了多年的个人脚本,习惯closures错误显示。 我即将发布一些这些脚本,并希望以正确的方式进行操作。
我closures错误显示的唯一原因是为了避免在使用isset()之前testing每一个var。
所以,这是我的问题:
有没有比这更好的方法来宣布多个variables?
<?php // at the begining of my main file if (!isset($foo)) ($foo = ''); if (!isset($bar)) ($bar = ''); if (!isset($ping)) ($ping = ''); if (!isset($pong)) ($pong = ''); // etc. for every single var ?> 比如这样的东西:
 <?php var $foo, $bar, $ping, $pong; ?> 
	
 <?php $foo = $bar = $ping = $pong = ''; ?> 
如果这是你的脚本,你知道你使用哪个variables,为什么你要花钱检查variables是否被声明?
我之前在一个评论中发布了这个,但是有人build议我把它作为答案提交。
我能想到的最简单的方法是:
 $foo = $bar = $ping = $pong = ''; 
我经常喜欢将事物设置为false,而不是空string,这样您可以随时使用=== false来进行检查,但这只是一种偏好,取决于您如何使用这些variables以及如何使用这些variables。
 你的if()与isset()尝试是这样做的正确方法! 
但是使用三元运算符 ( Ternary Operator) ,你可以把它写得更简短一些:
 $foo = isset($foo) ? $foo : ''; 
 第一个$foo将被设置为后面的值? 当=之后的条件为真时,否则将被设置为:之后的值。 条件( =和?之间)始终以布尔值forms输出。 
 从PHP 5.3开始, 你可以写得更短 : 
 $foo = isset($foo) ?: ''; 
 这会将$foo设置$foo TRUE或FALSE (取决于isset()返回的内容),正如@Decent Dabbler在注释中指出的那样。 删除isset()将其设置为''但它也会引发一个未定义的variables通知(不是在生产中)。 
从PHP 7开始,您可以使用空的合并运算符:
 $foo = $foo ?? ''; 
 这不会抛出任何错误,但是如果$foo存在并且是空的,它将评估为TRUE ,与速记三元运算符相反,如果variables为空,则评估为FALSE 。 
 如果你把你的variables的名字放在一个数组中,然后用一个三元运算符(Ternary Operator)来循环它们,这与powtac的答案类似。 
 $vars = array('foo', 'bar', 'ping', 'pong'); $defaultVar = ''; foreach($vars as $var) { $$var = isset($$var) ? $$var : $defaultVar; } 
正如其他答案中提到的那样,从5.3版本开始,PHP允许你编写上面的代码,如下所示:
 $vars = array('foo', 'bar', 'ping', 'pong'); $defaultVar = ''; foreach($vars as $var) { $$var = isset($$var) ?: $defaultVar; } 
注意改变的三元操作符。
为什么不把它们设置?
 <?php $foo = ''; $bar = ''; //etc ?> 
如果你试图保留其中的价值,那么是的,这是一般的正确的方法。 请注意,您的语句中不需要第二对括号。
 if (!isset($foo)) $foo = ''; 
足够。
要解决的问题
  <?php $foo = $bar = $ping = $pong = ''; ?> 
投掷
注意:未定义的variables:…
  <?php @$foo = $bar = $ping = $pong = ''; ?> 
它不会修复它,但不会显示nd不会停止parsing脚本。
$ a = ['foo','bar','ping','pong']; foreach($ a as $ v)$$ v ='';
//;)