如何为每个循环计数将变量插入数组,然后在邮件中打印数组/变量?

时间:2013-05-15 22:18:07

标签: php arrays loops foreach paypal-ipn

我有一个IPN脚本可以执行许多操作,现在它从PayPal获取数据并使用它向客户发送邮件收据。 PayPal有一个IPN模拟器,可让您模拟购买并发送这些邮件,每次只能发送一个item_name /一个产品。今天我的解决方案正在为至少一种产品工作,但我不知道购买多种产品会发生什么。测试这一点的唯一方法是使用真实的VISA进行实时支付。

我的PDT脚本有一个类似的问题,它更容易测试,因为我可以更新用户在我更改并上传新文件后重定向到的pdt.php页面,但这是一个电子邮件,所以我不能这样做。

我的想法是为每个循环计数创建一个空数组并使用循环/每个产品将当前变量(item_name)添加到数组中,然后在发送邮件时包含数组内容所以所有项目/产品显示。这可能吗?我已经玩了一段时间,但不能完成山雀,要么打印“数组”或“”空白。

今天是我的IPN脚本:http://pastebin.com/ysUsfGyf

我认为将此关键区域编辑为类似的内容,我所做的是将计数器设置为0($ j = 0),实例化一个空数组($ arr = array();)并尝试插入item_name,每个循环计数到数组[j],应该是0 1 2 3,依此类推。然后在撰写邮件时,我添加了一行:$ message。=“$ arr”;但我没有得到任何好结果,只有空或作为“数组”。

$array_keys = array_keys($ipn_post_data);
    $count = 1;
    $i = 1;
    $j = 0;
    $arr = array();

    foreach($array_keys as $element) 
    {
        if (!strncmp('item_number', $element, strlen('item_number')))
            $count++;   

    }
        for($idx = 1; $idx < $count; $idx ++ & $i++) 
        {   
            $name = mysql_real_escape_string($ipn_post_data[item_name . $i]);
            $arr[$j] = $name;
        }

我可以在此脚本或调试中更改哪些内容以解决此问题?

1 个答案:

答案 0 :(得分:0)

工作代码:

 // send user an email with a confirmation

    $array_keys = array_keys($ipn_post_data);
    $count = 1;
    $i = 1;
    $j = 0;
    $arr = array();

    foreach($array_keys as $element) 
    {
        if (!strncmp('item_number', $element, strlen('item_number')))
            $count++;   

    }
        for($idx = 1; $idx < $count; $idx ++ & $i++ & $j++) 
        {   
            $name = mysql_real_escape_string($ipn_post_data[item_name . $i]);
            $arr[$j] = $name;
        }

    $arrstring = implode( ', ', $arr);

以及之后$message .= "$arrstring";