for($j = 0; $j < $rows; ++$j)
{
    $result->data_seek($j);
    $row = $result->fetch_array(MYSQLI_NUM);
echo <<<_END
    <pre>
    Author: $row[0]
    Title: $row[1]
    Type: $row[2]
    Year: $row[3]
    ISBN: $row[4]
    </pre>
_END;
}


在使用echo进行文本块处理时遇到了两件事,在提出解释时有些困惑。


echo块的任何缩进都将导致网页崩溃。
如果我将fetch_array类型更改为MYSQLI_ASSOCMYSQLI_BOTH,则诸如$row['author']的关联调用会导致页面崩溃。访问echo时使用单行调用$row可以正常工作。

最佳答案

PHP heredoc的结束标识符不应缩进。这是手册中的警告段落。



  警告请务必注意,带有结束标识符的行除分号(;)外,不得包含其他任何字符。特别是这意味着标识符可能不会缩进,并且在分号之前或之后可能没有空格或制表符。同样重要的是要认识到,结束标识符之前的第一个字符必须是本地操作系统定义的换行符。



在Heredoc内部,数组键要么不带引号,要么不带引号。

$array[key] // works (the only place you do not quote string keys in PHP)
${array["key"]} // works
$array["key"] // doesn't work

关于php - PHP回显块行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32314291/

10-11 22:23
查看更多