Доброго времени суток! Помогите пожалуйста, у меня есть ассоциативный массив и есть функция отправки почты. Мне надо значения массива оправить почтой. Я пробовал вставлять функцию почты в цикл foreach перебора массива, но тогда мне приходит очень много писем по одной позиции массива, т.е. сколько значений массива столько и писем. А как сделать чтобы в одном письме приходили все значения массива?
Это я знаю и это работает, кстати также как и print_r или var_dump, но в таком случае я получаю всю структуру массива определенного стиля отображения, а мне требуется чтобы письмо выглядило по человечески...
вот как я делаю: PHP: <?php $arr = array ("один" => "1", "два" => "2", "три" => "3", "десять" => "10"); foreach ($arr as $k => $v) { echo $k." - ".$v."<br>"; $temp = $arr; } $position = print_r($temp, true); $to = "namel@hostl.ru"; $mail_subject = "сводка"; $body = "произошли изменения: $position"; $mail_headers="content-type:text/html; charset=windows-1251"; mail ($to, $mail_subject, $body, $mail_headers); ?> При таком варианте мне приходит письмо только и только такого вида: Array ( [один] => 1 [два] => 2 ... ) Но такой вид меня не устраивает, хочу чтобы нормально все выглядело, т.к. эти письма получаю не я и этот человек испугается такого вида. А если я делаю так: PHP: <?php $arr = array ("один" => "1", "два" => "2", "три" => "3", "десять" => "10"); foreach ($arr as $k => $v) { echo $k." - ".$v."<br>"; $to = "namel@hostl.ru"; $mail_subject = "сводка"; $body = "произошли изменения: $k." - ".$v."<br>"; $mail_headers="content-type:text/html; charset=windows-1251"; mail ($to, $mail_subject, $body, $mail_headers); } ?> Тогда письма выглядя нормально, но сами пониамете таких писем уйма приходит, т.к. функция в цикле.
PHP: <?php $arr = array ("один" => "1", "два" => "2", "три" => "3", "десять" => "10"); $body = "произошли изменения: <br>"; $mail_subject = "сводка"; $to = "namel@hostl.ru"; $mail_headers="content-type:text/html; charset=windows-1251"; foreach ($arr as $k => $v) { $body .= "{$k} - {$v}<br>"; } mail ($to, $mail_subject, $body, $mail_headers); ?>
Gromo СПАСИБО ТЕБЕ ОГРОМНОЕ! Все гуд, работает, только не мог бы ты объяснить мне что значит ".=" и фигурные скобки?
$body .= " text here"; то же самое, что и $body = $body." text here"; фигурные скобки нужны для подставления сложных перменных внутри строки с двойными кавычками. здесь простой случай, так что можно было бы написать и $body .= "$k - $v<br>"; но если бы ты работал с массивами, то запись $body .= "$k - $arr[$k]<br>"; не сработала бы, а $body .= "$k - {$arr[$k]}<br>"; сработала.
Спасибо тебе за полезную для меня инфу, теперь на будущее буду знать. А такой еще вопрос - html разметка в этой строке не работает, т.е. например там написано <br>, мне и пишет в результате <br>, а не переносит на след. строку, это как решить?