我通过示例描述问题: 让,
svn export URL-to-the-project
我按照以下方式连接上述变量。
public static void Copy(string sourceDir, string targetDir)
{
Directory.CreateDirectory(targetDir);
foreach(var file in Directory.GetFiles(sourceDir))
File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)),true);
foreach(var directory in Directory.GetDirectories(sourceDir))
Copy(directory, Path.Combine(targetDir, Path.GetFileName(directory)));
}
当我打印$actual_food['Food']['name'] = 'Tea';
$actual_food['Food']['s_name'] = 'Local';
时,输出就像' - 本地'但不打印$food_name = $actual_food['Food']['name']." ".!empty($actual_food['Food']['s_name']) ? "- ".$actual_food['Food']['s_name'] : "";
内容。
我认为这个问题有点傻,但我的好奇心想知道。提前谢谢。
答案 0 :(得分:3)
使用三元运算符时需要注意连接。您可以尝试
$food_name = ($actual_food['Food']['name'])." ".(!empty($actual_food['Food']['s_name']) ? "- ".$actual_food['Food']['s_name'] : "");
echo $food_name;// Tea - Local
在这里,我已将变量括在括号()
因为我们称之为operator precedence
。如果我们不将三元运算符括在括号内,那么您的代码将被解释为
($actual_food['Food']['name'] . " " . !empty($actual_food['Food']['s_name']) ?...;
因此,您只需将三元运算符括起来以获得正确的解释
答案 1 :(得分:0)
尝试
$actual_food['Food']['name'] = 'Tea';
$actual_food['Food']['s_name'] = 'Local';
$food_name = !empty($actual_food['Food']['s_name']) ? $actual_food['Food']['name']." - ".$actual_food['Food']['s_name'] : $actual_food['Food']['name'];
echo $food_name;
OR
在()
条件之前和之后添加!empty
,如
$food_name = $actual_food['Food']['name']." ".(!empty($actual_food['Food']['s_name']) ? "- ".$actual_food['Food']['s_name'] : "");