您可以将一个字符串连接到一行中的两个变量上吗?

时间:2019-10-12 22:41:33

标签: php

最初,我只需要构建一个带有三元操作链的MySQL查询字符串即可。

(isset($jsonData->type)) ? $whereStr .= " AND `ACCIDENT_TYPE` IN (:ctype)" : false;

然后在运行$queryStr之前将其附加到$query = $readDB->prepare($queryStr)。一时间,这很好。但是后来我发现自己需要使用LEFT JOIN,并且不再能够将所有WHERE子句保留在一个字符串中,因为现在我需要使用单独的ON子句而不是单个{{1 }}子句。

起初,我以为我会尝试一下:

WHERE

您可以想象,这没有用。由于(isset($jsonData->type)) ? $whereStr .= $accidentOnStr .= " AND `ACCIDENT_TYPE` IN (:ctype)" : false; 运算符的工作原理,$whereStr将以重复的值结束。

还有其他方法可以建立两个单独的字符串变量,在同一行中共享相同的子字符串吗?还是我被迫使用多行.语句来实现这一目标?

1 个答案:

答案 0 :(得分:1)

一种您可以做的(棘手的)方法是使用array_map将字符串添加到每个变量中,并将其传递给变量的引用数组。例如:

$a = 'a string';
$b = 'b string';
$c = true;
$c ? array_map(function (&$v) { $v .= " c string";}, [&$a, &$b]) : false;
echo "$a\n$b\n";

输出:

a string c string
b string c string

Demo on 3v4l.org