Размещение массива в php (smarty) - PullRequest
0 голосов
/ 18 сентября 2010

Я пытаюсь опубликовать несколько ответов (используя флажки) в форме. Вопрос в том, какие месяцы вы можете выбрать, вот мой код ...

$smarty->assign('month', array( '1' => 'January',  '2' => 'February',   '3' => 'March',  '4' => 'April',   '5' => 'May',  '6' => 'June',   '7' => 'July',  '8' => 'August',   '9' => 'September',  '10' => 'October'
                                                    ,   '11' => 'November',  '12' => 'December' )    );

Тогда строка, которую я использую для публикации значений, выглядит следующим образом ...

<span style="color:#000000;">'($_POST['monthsAvailable']) .'</span>

Однако, когда я получаю электронное письмо, оно просто читает «Массив». Мне было интересно, каков правильный формат для размещения массивов? Любой совет ценится!

Ответы [ 2 ]

0 голосов
/ 18 сентября 2010

Попробуйте использовать Smarty :: foreach

Серверная часть php

<?php
$months = array( 
  '1' => 'January',
  '2' => 'February',
  '3' => 'March',
  '4' => 'April',
  '5' => 'May',
  '6' => 'June',
  '7' => 'July',
  '8' => 'August',
  '9' => 'September',
  '10' => 'October',
  '11' => 'November',
  '12' => 'December' );

$smarty->assign('months', $months);
$smarty->assign('monthsAvailable', $_POST['monthsAvailable']);
?>

Шаблон Smarty

<ul>
{foreach from=$monthsAvailable item=mIndex}
    <li>{$months[$mIndex]}</li>
{/foreach}
</ul>

Должно работать, если $ _POST ['monthsAvailable'] определен как массив индексов месяцев

$_POST['monthsAvailable'] = array('1','10','12');
0 голосов
/ 18 сентября 2010

если $_POST['monthsAvailable'], то при печати он просто распечатает массив. Определите функцию примерно так:

function printMonths($array){
  global $smarty;
  $out = '';
  foreach ($monthIndex in $array){
    $out .= $smarty['month'][$month].' ';
  }
  return $out;
}

...

<span style="color:#000000;">'(printMonths($_POST['monthsAvailable'])) .'</span>

Если $ _POST ['monthsAvailable'] уже содержит названия месяцев, просто используйте explode().

...