制作列表形式 php 字符串

Make a list form php string

我有这段代码在变量 $products 中写入一串产品名称:

$products = '';
foreach($order->pad_products as $product) $products .= " $product->title";

当我在 HTML 电子邮件正文中打印 $products 并发送带有 PHP 的电子邮件时,在这种情况下,我添加了 $msg,我看到了所有产品都在一条线上。

$msg = "
  <html>
    <head>
      <style type='text/css'></style>
    </head>
    <body>
      <h1>Sent!</h1>
      <p>$name thank you</p>
        $products
    </body>
  </html>";

如何列出这些产品? 而且,我可以删除其中之一吗?

要将它们显示为列表,您只需使用 HTML:

创建一个列表
<?php
echo "<ul>";
foreach($order->pad_products as $product) {
    echo "<li>" . $product->title . "</li>";
}
echo "</ul>";
?>

备选方案,适用于您当前的代码

<?php
$products = "";
foreach($order->pad_products as $product) {
    $products .= "<li>".$product->title."</li>";
}
$msg = "
<html>
<body>
  <h1>Sent!</h1>
    $products
</body>
</html>";

ProcessWire(您用它标记的)让您可以使用 pop():

<?php
echo "<ul>";
$products = $order->pad_products;
$products->pop(); 
foreach($products as $product) {
    echo "<li>" . $product->title . "</li>";
}
echo "</ul>";
?>

另一种选择是计算项目数量并限制为少于该数量。您应该可以使用 ->count() 但我不知道 pad_products 是什么,所以如果这不起作用,您可以只使用 count($order->pad_products)

<?php
echo "<ul>";
$limit = $order->pad_products->count() - 1;
foreach($order->pad_products("limit=$limit") as $product) {
    echo "<li>" . $product->title . "</li>";
}
echo "</ul>";
?>