Как поместить ++var в строку heredoc

У меня есть строка heredoc, и я хочу поместить ++$var в строку. Мой код на самом деле намного сложнее, но выглядит он просто так:

t=0;
for(i=1;i<=20;i++){
echo <<<EOT
{++$t} somestring {$i}
{++$t} otherstring {$i}
{++$t} anotherstring {$i}
{++$t} nextstring {$i}
{++$t} endstring {$i}
EOT;
}

В цикле for находится нумерованный список из 5 строк, которые непрерывно повторяются. И каждые 5 строк содержат одно и то же число $i из цикла. Но ++$t так работать не может. Любая идея, как заставить его работать?

Ожидаемый результат:

1 somestring 1
2 otherstring 1
3 anotherstring 1
4 nextstring 1
5 endstring 1
6 somestring 2
7 otherstring 2
8 anotherstring 2
9 nextstring 2
10 endstring 2
11 somestring 3
...

Обновление (спасибо за ответы): В этом документе нет решения. Лучше использовать конкатенацию строк и кавычки. Если в поле heredoc есть длинный текст, лучше всего использовать для него массив.


person aleskva    schedule 11.03.2014    source источник
comment
Невозможно. Можете ли вы попробовать, $array = ['somestring', 'otherstring', 'anotherstring' ...];, а затем для сквозного цикла, echo ++$t . ' ' . $string . ' ' . $i;.   -  person Dave Chen    schedule 12.03.2014
comment
В вашем решении не так много конкатенаций, и в моем случае оно работает лучше, чем здесь. Думаю, попробую.   -  person aleskva    schedule 12.03.2014


Ответы (2)


Вместо этого используйте метод concat:

<?php

$array = array(
    'somestring',
    'otherstring',
    'anotherstring',
    'nextstring',
    'endstring'
);

$count = 0;
for ($i2 = 1; $i2 <= 20; $i2++)
    for ($i = 0; $i < count($array); $i++)
        echo ++$count . ' ' . $array[$i] . ' ' . $i2 . "\n";

Вывод:

1 somestring 1
2 otherstring 1
3 anotherstring 1
4 nextstring 1
5 endstring 1
6 somestring 2
7 otherstring 2
8 anotherstring 2
9 nextstring 2
10 endstring 2
11 somestring 3
[..truncated...]
person Dave Chen    schedule 11.03.2014

Вы не можете писать выражения внутри стиля heredoc, вы можете просто печатать переменные без каких-либо дополнительных операций.

person Jason OOO    schedule 11.03.2014
comment
И можно ли добавить перед heredoc эту строку: $var=++$i; а в heredoc напечатать $var? Работает ли эта замена? - person aleskva; 12.03.2014
comment
Нет, вам нужно использовать одинарные или двойные кавычки. - person Jason OOO; 12.03.2014
comment
Или я могу просто добавить перед heredoc эту строку: $var=$i+1; и в heredoc напечатать $var? Есть ли другая возможность, как это сделать? - person aleskva; 12.03.2014