2017-04-24 132 views
0

在下面的代码中,我使用var_export来记录正在导入的信息,但电子邮件仅显示foreach循环外的$values变量中的一个对象。只有一个数组结果显示外部foreach

我该怎么做才能获得预期的效果?

保罗:

$values = []; 

foreach ($guests as $k => $guest) 
{ 

    $values[$k] = array(
    'FirstName' => $guest['FirstName'], 
    'LastName' => $guest['LastName'], 
    'Email' => $guest['email'], 
    'Country' => $guest['country'], 
    '_CheckIn' => $guest['check-in_date'], 
    '_CheckOut' => $guest['check-out_date'], 
); 

电子邮件结果:

array (
    'FirstName' => 'Test 1', 
    'LastName' => 'Test 2', 
    'Email' => '', 
    'Country' => 'New Zealand', 
    '_CheckIn' => '2017-04-25', 
    '_CheckOut' => '2017-04-27', 
) 

预期的电子邮件结果 - 按$valuesvar_dump

array (
    'FirstName' => 'Test 1', 
    'LastName' => 'Test 2', 
    'Email' => '', 
    'Country' => 'New Zealand', 
    '_CheckIn' => '2017-04-25', 
    '_CheckOut' => '2017-04-27', 
) 
array (
    'FirstName' => 'Test 1', 
    'LastName' => 'Test 2', 
    'Email' => '', 
    'Country' => 'New Zealand', 
    '_CheckIn' => '2017-04-25', 
    '_CheckOut' => '2017-04-27', 
) 
array (
    'FirstName' => 'Test 1', 
    'LastName' => 'Test 2', 
    'Email' => '', 
    'Country' => 'New Zealand', 
    '_CheckIn' => '2017-04-25', 
    '_CheckOut' => '2017-04-27', 
) 

代码:

$values = []; 
    foreach ($guests as $guest) 
    { 

     $values = array(
     'FirstName' => $guest['FirstName'], 
     'LastName' => $guest['LastName'], 
     'Email' => $guest['email'], 
     'Country' => $guest['country'], 
     '_CheckIn' => $guest['check-in_date'], 
     '_CheckOut' => $guest['check-out_date'], 
    ); 


    //inserting guestst to Contact table 
     $optInEmail = $values['Email']; 
     $optInReason = 'Purchased Accommodation'; 


     $tagID = '566'; // 
     $contactID = $infusionsoft->contacts()->addWithDupCheck($values,'Email'); 
     $infusionsoft->contacts()->addToGroup($contactID, $tagID); 
     $infusionsoft->emails()->optIn($optInEmail, $optInReason); 

    echo '<pre>'; 
     var_dump($values); 
    echo "</pre>";  

    } 


    if(empty($values)) 
    { 
     echo '<h1>No new Data</h1>'; 
    }else{ 
    $from = "API"; 
    $to  = ""; 
    $subject = "API Import"." ".date("h:i:sa")." ".date("d-m-Y"); 
    $message = var_export($values, true); 
    $headers = "From:" . $from; 

    if(mail($to,$subject,$message, $headers)) 
    { 
     echo '<h1>E-mail Sent Data Imported</h1>'; 

    }else{ 
     echo "What Broke Boss"; 
} 

回答

1

这是我通过电子邮件调试一些变量的方式。

mail($to,$subject,print_r($variable,true)); 

var_export打印对象,因为此函数无法处理引用循环/递归数组。

这是一篇关于differences between var_export and print_r(和var_dump也很有用)的文章。

+0

谢谢,但它仍然给我单个结果 –

+0

哦,这是因为你正在覆盖$ values数组。 编辑的foreach: '的foreach($宾客$ K => $客人)' 然后,在$值: '$值[$ K] =阵列(...)' 这应该工作。 –

+0

正确我只是不能点击/过度思考如何解决它 –

0

说实话,我不明白的问的是。请重新说明您希望预期的结果。

请查看代码

$values = array(
    'FirstName' => $guest['FirstName'], 
    'LastName' => $guest['LastName'], 
    'Email' => $guest['email'], 
    'Country' => $guest['country'], 
    '_CheckIn' => $guest['check-in_date'], 
    '_CheckOut' => $guest['check-out_date'], 
); 

在的foreach这一节中,变量$值被完全与您刚刚创建的阵列取代。也许你打算做类似

$values[] = array(
    'FirstName' => $guest['FirstName'], 
    'LastName' => $guest['LastName'], 
    'Email' => $guest['email'], 
    'Country' => $guest['country'], 
    '_CheckIn' => $guest['check-in_date'], 
    '_CheckOut' => $guest['check-out_date'], 
); 

上面的代码会将新数组添加到$ values数组中。

+0

我用当前和预期结果的示例更新了我的问题 –

+0

刚刚收到来自堆栈溢出的电子邮件,它看起来像我提供的信息可以帮助您。恭喜。 – Johnish