我有一个简单的" if"代码什么有效。在"阵列"它可以工作,但会得到错误"未定义的偏移:"。有什么问题?
代码有效:
if (file_exists(glob($root . '/*/E0622.pdf')[0])) {
echo str_replace($root . '/', '', glob($root . '/*/E0622.pdf')[0]) ;
} else {
echo 'x.pdf - no-no-no!' ;}
但是在数组中得到"解析错误:语法错误,意外'如果' (T_IF)在":
'E0622' => 'E0622' . if (file_exists(glob($root . '/*/E0622.pdf')[0])) {
echo str_replace($root . '/', '', glob($root . '/*/E0622.pdf')[0])
} else {
echo 'x.pdf - no-no-no!' } ,
会出什么问题? TNX!
答案 0 :(得分:4)
if
语句本身不能按照您尝试的方式使用。
但是,存在short-hand if-else语句。它适用于像你这样的案例。
看起来像这样:conditional-expression ? value-when-true : value-when-false
。这是一个表达式,因此您可以在任何其他表达式中插入它。
$var = 7;
echo ($var == 7 ? "Var is seven" : "Var is not seven");
// Those parentheses are optional, but I added them for clarity.
它回应" Var是七"。
这有效:
'E0622' => 'E0622' . (file_exists(glob($root . '/*/E0622.pdf')[0]) ? str_replace($root . '/', '', glob($root . '/*/E0622.pdf')[0]) : 'x.pdf - no-no-no!'),
PS:虽然您可以根据需要嵌套尽可能多的简短if-else语句,但事情可能会变得非常混乱:
$a = 1 == 1 ? 2 == 2 ? 3 == 4 ? 9 : 8 == 8 ? 1 : 2 : 7 : 6;
答案 1 :(得分:2)
PHP中的if
构造不是表达式,不能用于连接。
您需要更改结构以将变量设置为要连接首先的变量,然后将该变量添加到字符串中。