Вернуть массив из функции PHP в Smarty - PullRequest
1 голос
/ 12 февраля 2011

С риском для себя смущения, кто-нибудь может сказать мне, как использовать return здесь:

function dayCount() {

    for ($dayBegin = 1; $dayBegin < 32; $dayBegin++)
    {
      "<option value=\"".$dayBegin."\">".$dayBegin."</option>";
    }
}

Моя проблема в том, что я передаю эту функцию Smarty через

$dayCount = dayCount();
$smarty->assign('dayCount', $dayCount);

и

{$dayCount}

но вместо этого HTML направляется прямо в буфер, прямо перед <html> (спасибо Хэмиш), а не внутри нужного мне элемента HTML.

Любая помощь в этом?

1 Ответ

2 голосов
/ 12 февраля 2011

Вам нужно создать оператор возврата

function dayCount() {
    $return = array();
    for ($dayBegin = 1; $dayBegin < 32; $dayBegin++)
    {
      $return[] = "<option value=\"".$dayBegin."\">".$dayBegin."</option>";
    }
    return $return;
}

Хотя это создание массива, как вы и просили. При выводе вам нужно будет взорвать его.

implode('', $dayCount);

В противном случае создайте строку вместо массива.

...