Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过电子邮件发送此购物车阵列?_Php_Arrays_Email_Session - Fatal编程技术网

Php 如何通过电子邮件发送此购物车阵列?

Php 如何通过电子邮件发送此购物车阵列?,php,arrays,email,session,Php,Arrays,Email,Session,我不知道如何通过电子邮件发送整个购物车阵列。我尝试使用print_r函数,但结果中只有一项 任何帮助都将不胜感激 <?php session_start(); ?> <?php if (!isset($_SESSION['cart']) || (count($_SESSION['cart']) == 0)) { echo '<p>Your shopping cart is empty, so <a href="L14O1_buy.php">g

我不知道如何通过电子邮件发送整个购物车阵列。我尝试使用print_r函数,但结果中只有一项

任何帮助都将不胜感激

<?php session_start(); ?>

<?php

if (!isset($_SESSION['cart']) || (count($_SESSION['cart']) == 0)) {
    echo '<p>Your shopping cart is empty, so <a href="L14O1_buy.php">get shopping</a>.</p>';
} else {
    echo '<table>
    <tr>
    <th>Product</th>
    <th>Cost</th>
    <th>Units</th>
    <th>Subtotal</th>
    </tr>';
    $total = 0;

    foreach($_SESSION['cart'] as $item) {

    echo "<tr>
        <td>{$item['item']}</td>
        <td>\${$item['unitprice']}</td>
        <td>{$item['quantity']}</td>
        <td>$".($item['unitprice'] * $item['quantity'])."</td>
        </tr>";
        $total += ($item['unitprice'] * $item['quantity']);
    }
    echo '</table>';
    echo "<p>Grand total: \$$total</p>";
}
?>


<?php
$to      = 'blah@gmail.zzz';
$subject = 'the subject';
$body = print_r($item);
$headers = 'From: blah@gmail.zzz' . "\r\n" .
        'Reply-To: blah@gmail.zzz' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $body, $headers);
?>


只显示最后一项,因为您的
foreach($\u会话['cart']作为$item).
循环使用
$item
变量$每个循环都会重新分配项目。循环结束时,保留最后一个值

试试
$body=print\r($\u SESSION['cart'],true)

试试这个:

<?php

session_start(); 

$body = '';

if (!isset($_SESSION['cart']) || (count($_SESSION['cart']) == 0)) {
    echo '<p>Your shopping cart is empty, so <a href="L14O1_buy.php">get shopping</a>.</p>';
} else {
    echo '<table>
    <tr>
    <th>Product</th>
    <th>Cost</th>
    <th>Units</th>
    <th>Subtotal</th>
    </tr>';
    $total = 0;

    foreach($_SESSION['cart'] as $item) {

    echo "<tr>
        <td>{$item['item']}</td>
        <td>\${$item['unitprice']}</td>
        <td>{$item['quantity']}</td>
        <td>$".($item['unitprice'] * $item['quantity'])."</td>
        </tr>";
        $total += ($item['unitprice'] * $item['quantity']);
        $body .= print_r($item, true)."\n";
    }
    echo '</table>';
    echo "<p>Grand total: \$$total</p>";
}

$to      = 'blah@gmail.zzz';
$subject = 'the subject';
$body = "<pre>{$body}</pre>";
$headers = 'From: blah@gmail.zzz' . "\r\n" .
        'Reply-To: blah@gmail.zzz' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $body, $headers);

谢谢,达米恩。那很好用。只是好奇:有没有办法将html格式复制到电子邮件中?当然。只需添加一个
$body=''替换为
$body.=”
这将用您通常会回显的所有内容填充body变量。在底部,做一个
echo$body
将html发送到浏览器,并使用
$body
作为邮件正文文本。如果您想知道
$body.=''
的意思是:附加到
$body
变量。如果这个答案有用的话。请点击答案左边的复选标记接受它:)(只说因为你是stack上的新用户…)谢谢你的建议。我是个笨蛋,弄不明白。你能推荐一个能引导Noobie完成整个过程的网页吗?