Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Twig在for循环中添加空格_Php_Html_Twig - Fatal编程技术网

Php Twig在for循环中添加空格

Php Twig在for循环中添加空格,php,html,twig,Php,Html,Twig,我正在向现有项目添加一个函数,所以我必须使用twig。我正在显示一个单词的翻译,所以我有一个对象列表。对象具有多个属性 {% for trans in Translations.dictionaryList[0].wordTranslationsList|sortLangAndFreqClass %} {% if currentLanguage is not same as (trans.targetLanguage) %} {% set current

我正在向现有项目添加一个函数,所以我必须使用twig。我正在显示一个单词的翻译,所以我有一个对象列表。对象具有多个属性

 {% for trans in Translations.dictionaryList[0].wordTranslationsList|sortLangAndFreqClass %}
        {% if currentLanguage is not same as (trans.targetLanguage) %}
            {% set currentLanguage = trans.targetLanguage %}
            {% set first = TRUE %}<b> {{- Languages[(currentLanguage |upper)] -}}: </b>
        {% endif %}
        {% if not first %}, {% endif %}
            <a href="{{'res'|url({'view_language' : view_language, 'corpusId': trans.corpus, 'word' : trans.translation})}}">{{- trans.translation -}}</a> ({{- trans.freqClass -}})
        {% set first = FALSE %}
    {% endfor %}
{%用于翻译中的转换。字典列表[0]。wordTranslationsList | sortLangAndFreqClass%}
{%如果currentLanguage与(trans.targetLanguage)%%不同}
{%set-currentLanguage=trans.targetLanguage%}
{%set first=TRUE%}{{-Languages[(currentLanguage | upper)]-}}:
{%endif%}
{%if不是第一个%},{%endif%}
({-trans.freqClass-}})
{%set first=FALSE%}
{%endfor%}
输出内容如下:丹麦语:hus(10)英语:home(6)、business(7)、family(7)、live(8)、house(8)

但是我想删除逗号前的空格,所以应该是:

丹麦语:hus(10)英语:家(6)、生意(7)、家庭(7)、生活(8)、房子(8)


我找到了将所有内容都写在一行中的解决方案,但这非常难看,而且不可能阅读。有没有其他方法可以解决这个问题?

我相信这不是一个小问题,而是html的工作方式。在常规html中,如果在任何字符之前有一个换行符,它将转换为常规空格

<p>something
,
another thing</p>
现在,查看twig文档[1],我发现在任何循环中都有一个隐式变量
loop
(就像您正在使用的for)。此变量的两个属性是
loop.first
loop.last
,它们告诉您当前元素是第一个还是最后一个元素

您可以使用最后一个元素,而不是使用第一种方法

{% for trans in Translations.dictionaryList[0].wordTranslationsList|sortLangAndFreqClass %}
        {% if currentLanguage is not same as (trans.targetLanguage) %}
            {% set currentLanguage = trans.targetLanguage %}
            <b> {{- Languages[(currentLanguage |upper)] -}}: </b>
        {% endif %}

        <a href="{{'res'|url({'view_language' : view_language, 'corpusId': trans.corpus, 'word' : trans.translation})}}">{{- trans.translation -}}</a> ({{- trans.freqClass -}}){% if not loop.last %}, {% endif %}
    {% endfor %}
{%用于翻译中的转换。字典列表[0]。wordTranslationsList | sortLangAndFreqClass%}
{%如果currentLanguage与(trans.targetLanguage)%%不同}
{%set-currentLanguage=trans.targetLanguage%}
{{-语言[(当前语言|上限)]-}:
{%endif%}
({-trans.freqClass-}}){%if-not-loop.last%},{%endif%}
{%endfor%}

请注意,我是如何在

中添加
{%if not loop.last%},{%endif%}
的,您可以这样一行:

{% set items = [ 'foo', 'bar', 'foobar', 'barfoo', ] %}
{% for item in items %}
    {{- ((not loop.first ? ', ')~'<a href="http://www.example.com#'~item~'">'~item~'</a>') | raw -}}
{% endfor %}
{%set items=['foo','bar','foobar','barfoo',]%}
{items%%中的项的%s}
{{-((不是loop.first?,')~'')| raw-}
{%endfor%}

非常感谢!这是我的第一个方法,但在我的项目中,我被告知删除每个语言名称前的逗号,因此从以下内容中删除:丹麦语:hus(10)、英语:home(6)、business(7)、family(7)、live(8)、house(8)到以下内容:丹麦语:hus(10)英语:home(6)、business(7)、family(7)、live(8)、house(8)。使用loop.last,我可以删除for循环的最后一个逗号
{% set items = [ 'foo', 'bar', 'foobar', 'barfoo', ] %}
{% for item in items %}
    {{- ((not loop.first ? ', ')~'<a href="http://www.example.com#'~item~'">'~item~'</a>') | raw -}}
{% endfor %}