2017-04-24 12 views
0

以下のコードでは、私はvar_exportを使用してインポートする情報を文書化していますが、電子メールはforeachループ外の変数$values内のオブジェクトを1つだけ表示しています。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'], 
); 

Eメールの結果:Eメールの結果期待

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

正直に言うと、私はされて尋ねるのか理解していません。期待される結果がどんなものかを言い換えてください。

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[] = 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

関連する問題