"如果"工作但在"阵列"它不起作用

时间:2017-11-24 08:33:14

标签: php arrays

我有一个简单的" 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!

2 个答案:

答案 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构造不是表达式,不能用于连接。

您需要更改结构以将变量设置为要连接首先的变量,然后将该变量添加到字符串中。