Twig - array_pop?

时间:2015-02-27 14:12:51

标签: twig

我有一个沿

行的多维数组
array(2) { 
    [11]=> array(1) { 
        ["L2J"]=> array(1) { 
            ["VS7"]=> array(2) { 
                ["26 Feb 2015 12:00"]=> array(2) { 
                    ["C"]=> string(1) "9" 
                    ["D"]=> string(1) "9" 
                } 
                ["26 Feb 2015 13:00"]=> array(2) { 
                    ["C"]=> string(1) "9" 
                    ["D"]=> string(1) "6" 
                } 
            } 
        } 
    } 
}

现在我做了一些循环,现在我已经可以访问日期。

{% for sid, psuedos in alerts %}
    {% for psuedo, flights in psuedos %}
        {% for flight, dates in flights %}

        {% endfor %}
    {% endfor %}
{% endfor %}

现在我正在转换一些普通的PHP代码,此时我会做

$firstDate = array_pop(array_keys($dates));

有没有办法在Twig做这样的事情?我搜索过但似乎找不到任何东西。

更新

这是我最近的努力,似乎无法通过

来切割最后一个数组元素
{% set firstDate = [dates|keys]|last|slice(1) %}

3 个答案:

答案 0 :(得分:6)

没有一个Twig函数可以完全执行array_pop()所做的事情(返回最后一个数组元素同时缩短数组),但有办法做他们是分开的。

假设:

{% set array = [1,2,3,4,5] %}

要获取最后一个元素,请使用Twig的last filter

{{ array|last }}

{# returns '5' #}

您只能删除slice filter这样的最后一个元素:slice(0,-1)

{% set array = array|slice(0,-1) %}

{# array = [1,2,3,4] #}

...或工艺without filter

{% set arrayLast = array|last %}

{% set array = array|without(arrayLast) %}

{# array = [1,2,3,4] #}

答案 1 :(得分:1)

弹出最后一个元素

{% set array = [1,2,3] %}

{% set value = array|last %}

{{ value }}  {# return 3 #}

{% set array = array|slice(start, length - 1) %}

{% for value in array %}

{{ value }}  {# return 1,2 #}

{% endfor %}

弹出第一个元素

{% set array = [1,2,3] %}

{% set value = array|first %}

{{ value }} {# return 1 #}

{% set array = array|slice(start + 1, length) %}

{% for value in array %}

{{ value }} {# return 2,3 #}

{% endfor %}

答案 2 :(得分:0)

快速检查一下,您是否尝试过slice(-1)

传递一个负数作为第一个参数应该从数组的末尾开始,然后再运行那么多。