是否有可能“粘合”两个参考变量?
例如
$more = &$first.':'.&$second;
使用此功能,我收到语法错误,意外& 。
完整代码
$numOf = isset($_GET['numof']) ? $_GET['numof'] : 'x';
if($numOf == 1) {
$more = &$first;
} else if($numOf == 2) {
$more = &$first.':'.&$second;
} else {
$more = '';
}
$results = array(); // array with results from database
foreach($results as $res) {
$first = $res[0];
$second = $res[1];
echo $more.$res[3];
}
答案 0 :(得分:1)
您可以做的一件事是:
$ar = array(&$first, &$second);
$more = implode(":", $ar);
答案 1 :(得分:1)
你应该使用Closure来实现你想要的。的确,你需要PHP 7(可能是5.6,不能告诉我无法测试)才能达到预期的效果。这是一个例子:
<?php
$first = "a";
$second = "b";
$more = function(){ global $first,$second; return $first.$second; };
echo $more()."<br>"; // This will output ab
$first = "b";
echo $more(); // This will output bb
答案 2 :(得分:0)
不直接,至少不是我所知道的。 可以做的是使用自动组合值的方法创建一个类。如果你只想要字符串输出,你可以使用魔术方法__tostring,这样你就可以直接使用该类:
class combiner
{
private $a;
private $b;
public function __construct(&$a, &$b)
{
$this->a = &$a;
$this->b = &$b;
}
public function __tostring() {
return $this->a.":".$this->b;
}
}
$ta = "A";
$tb = "B";
$combined = new combiner($ta, $tb);
echo $combined; //A:B
$ta = "C";
echo $combined; //C:B
答案 3 :(得分:0)
您可以通过以下方式获得所需的结果:
<?php
function more($first, $second){
if(!empty($_GET['numof'])){
if($_GET['numof']==1)
return $first;
elseif($_GET['numof']==2)
return $first.':'.$second
}
return '';
}
$results = array(); // array with results from database
foreach($results as $res) {
$first = $res[0];
$second = $res[1];
echo more($first, $second).$res[3];
}