1

配列の内容をメールで送信しようとしていますが、print_r メソッドを試しましたが、メールでのフォーマット方法が気に入らなかったため、内破を試みましたが、現在は実際にはコンテンツを送信していません。ただ「配列配列配列」

これは私のコードです:

<?php 
$con = mysqli_connect("localhost", "user","pw", "db");
if (!$con)
{
 die('Could not connect: ' . mysqli_error($con));
}

$recipient_email = "email@email.com";

$result= mysqli_query($con, "SELECT * FROM subscribers WHERE datetime_registered >=       DATE_SUB(NOW(), INTERVAL 9 DAY)")or die(mysqli_error($con));
$subscribers = array();
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){

    $subscribers[] = array(
    "uid" => $row['id'],
    "name" => $row['name'],
    "email" => $row['email'],
    "ip" => $row['ip'],
    "date_registered" => $row['datetime_registered']
    );


 }


 $headers  = 'MIME-Version: 1.0' . "\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
 $headers .= 'From: '.$recipient_email.''."\n";

 $subject = "Subject";
 $recipient = $recipient_email;
 $content = implode("\n", $subscribers);
 mail($recipient, $subject, $content, $headers);
 ?>

誰が何がうまくいかないのか知っていますか?

4

5 に答える 5

3

print_r を使用して配列をメール送信する場合は、2 番目のパラメーターに true を入力します。

print_r($array, true); 

詳細については、次のリンクを参照してください: http://php.net/manual/en/function.print-r.php

于 2013-06-14T08:57:03.040 に答える
1

これは、implode関数がトップレベルの配列のみを内破しているためです$subscribers。次のレベルの配列データにはなりません。

これを試すことができます:

foreach($subscribers as $subscriber_data){
    $dataset[] = implode(', ', $subscriber_data);
}

$content = implode("\n", $dataset);
mail($recipient, $subject, $content, $headers);
于 2013-06-01T20:25:56.153 に答える
0

値のみを送信するのではなく、その配列をキーと値のペアで送信すると非常に便利です..

次のスクリプトを使用して変換し、メールで送信してください。

$data = '';
foreach ($subscribers as $key=>$value){
    $data .= $key.'-------'.$value;
    $data.= "\n";
}

PHPメール機能で送信..

$headers  = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
$headers .= 'From: '.$recipient_email.''."\n";

$subject = "Subject";
$recipient = $recipient_email;
$content = $data;
mail($recipient, $subject, $content, $headers);
于 2015-01-09T05:43:26.960 に答える
0

$headers変数の前に、次のコードを使用します。

$newSubscribers = array();
foreach($subscribers as $data)
{
    $newSubscribers[] = implode(', ', $data);
}

$newSubscribers = implode("<br>\n", $newSubscribers);
$subscribers = $newSubscribers;

したがって、最終コードは次のようになります。

...
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){

$subscribers[] = array(
"uid" => $row['id'],
"name" => $row['name'],
"email" => $row['email'],
"ip" => $row['ip'],
"date_registered" => $row['datetime_registered']
);


}

$newSubscribers = array();
foreach($subscribers as $data)
{
    $newSubscribers[] = implode(', ', $data);
}

$newSubscribers = implode("\n<br>", $newSubscribers);
$subscribers = $newSubscribers;


$headers  = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
$headers .= 'From: '.$recipient_email.''."\n";
于 2013-06-01T20:24:05.520 に答える