Twig - array_pop?

Nic*_*ice 2 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" 
                } 
            } 
        } 
    } 
}
Run Code Online (Sandbox Code Playgroud)

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

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

        {% endfor %}
    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

现在我正在转换一些普通的PHP代码,在这一点上,我会这样做

$firstDate = array_pop(array_keys($dates));
Run Code Online (Sandbox Code Playgroud)

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

更新

这是我最近的努力,似乎无法让它切片最后一个数组元素

{% set firstDate = [dates|keys]|last|slice(1) %}
Run Code Online (Sandbox Code Playgroud)

Ale*_*per 8

没有一个Twig函数可以完全array_pop()执行(返回最后一个数组元素并同时缩短数组),但有一些方法可以单独执行它们.

鉴于:

{% set array = [1,2,3,4,5] %}
Run Code Online (Sandbox Code Playgroud)

返回:'12345'

要获取最后一个元素,请使用Twig的last过滤器.

{{ array|last }}

{# returns '5' #}
Run Code Online (Sandbox Code Playgroud)

返回:'5'

您可以使用slice过滤器删除最后一个元素,如下所示:slice(0,-1)

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

{# array = [1,2,3,4] #}
Run Code Online (Sandbox Code Playgroud)

返回:'1234'

......或者工艺without过滤器:

{% set arrayLast = array|last %}

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

{# array = [1,2,3,4] #}
Run Code Online (Sandbox Code Playgroud)

返回:'1234'


Ryu*_*yuu 0

只是作为快速检查,您尝试过吗slice(-1)

传递负数作为第一个参数应该从数组的末尾开始并返回那么多。