这是我的代码:
<?php
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
include "$root/config.php";
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$stmt = $pdo->prepare('SELECT name FROM my_table');
$stmt->execute();
$results = $stmt->fetchAll();
foreach( $results as $row ) {
$dompdf = new DOMPDF();
$html = "
".if(!empty($row['name'])) {
echo "My name is".$row['name']."";
}."
";
$dompdf->load_html($html);
}
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream();
?>
我总是得到:
解析错误:语法错误,意外&#39;如果&#39; (T_IF)in 第17行的/var/www/user_name/html/create_pdf.php
像$html = "<p>Hello, it's me!</p>";
这样的简单HTML代码可以使用。
此类$html = "My name is ".$row['name']."!";
之类的PHP代码也可以使用。
只是if语句似乎不起作用。
我做错了什么?
答案 0 :(得分:1)
$html = "text... " . (!empty($row['...'])) ? $row['...'] : " " . " more text...";
删除if并创建&#39; inline&#39;或者如上所述的三元表达。
如果除非使用简写表达式(即:三元),否则无法连接语句
在您的情况下,这应该有效:
$html = " " . (!empty($row['name'])) ? "Your name is " . $row['name'] : "" . " ";
对于更长时间的连接,您可以执行此操作(和可读性):
$html = "";
$html .= (expression) ? True : False;
$html .= "";
要连接,我们在PHP中使用.=
。
我建议在PHP中使用print_f()
方法来处理长HTML,例如。
print_f("your name is %s", (!empty($row['name'])) ? $row['name'] : 'Default');
答案 1 :(得分:0)
你不能在中间连接if
的字符串(因为if
语句不会返回任何内容)。
您可以使用三元运算符来解决此问题:
$html = "
".(!empty($row['name']) ? "My name is".$row['name'] : '')."
";
如果你有很长的if-else语句,你应该关闭字符串并在里面连接它:
$html = "";
$html .= "Some string\n";
if (....) {
$html .= "Something new\n";
} elseif (...) {
$html .= "more...\n";
} else {
$html .= "...\n";
}
$html .= "Some text\";