Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 Twigg for循环是否以可预测的顺序运行?_Php_Arrays_Sorting_Twig - Fatal编程技术网

Php Twigg for循环是否以可预测的顺序运行?

Php Twigg for循环是否以可预测的顺序运行?,php,arrays,sorting,twig,Php,Arrays,Sorting,Twig,我在细枝模板中有一个for循环 {% for v in details.variants %} 此处详细信息。变体是一个来自数据库的数组: [variants] => Array ( [0] => Array ( [Id] => 8711 [Title] => Variant the First [Code] =>

我在细枝模板中有一个
for
循环

{% for v in details.variants %}
此处
详细信息。变体
是一个来自数据库的数组:

[variants] => Array
    (
        [0] => Array
            (
                [Id] => 8711
                [Title] => Variant the First
                [Code] => 
                [Price] => 6989.99
            )

        [1] => Array
            (
                [Id] => 8713
                [Title] => Variant the Second
                [Code] => 
                [Price] => 769.99
            )

    )
出于某种原因,在呈现的HTML中,第二个变量首先出现,然后是第一个变量。数据肯定是以正确的顺序从数据库中出来的,并且传递给Twig的数组是正确的

从一页到另一页是不一致的。有的顺序正确,;有些则不然。但是,每个页面都是一致的:多次刷新显示相同的顺序。(所有这些页面都使用同一个细枝模板。)我也无法在自己的机器上复制它,因为机器似乎总是显示正确的顺序


Twig是否遵守提供的数组顺序?数组是否有字符串键或整数键有区别吗?

是的,
twig
尊重顺序,因为它只是下面的一个
foreach

小枝

PHP


是的,
twig
确实尊重顺序,因为它只是一个
foreach
的底层

小枝

PHP


您如何确保
数据以正确的顺序从数据库中出来,并且传递给Twig的数组是正确的
?既然你说你不能在自己的机器上生成这个,这就引出了一些问题。你是如何确保
数据确实是以正确的顺序从数据库中出来的,并且传递给Twig的数组是正确的
?既然你说你不能在自己的机器上生产这个,这就产生了一些问题。
{% set variants = [
    {'foo':'bar', },
    {'foo':'foo', },
] %}

{% for variant in variants %}
    {{ variant.foo }}
{% endfor %}
    protected function doDisplay(array $context, array $blocks = array())
    {
        // line 1
        $context["variants"] = array(0 => array("foo" => "bar"), 1 => array("foo" => "foo"));
        // line 5
        echo "
";
        // line 6
        $context['_parent'] = $context;
        $context['_seq'] = twig_ensure_traversable((isset($context["variants"]) || array_key_exists("variants", $context) ? $context["variants"] : (function () { throw new Twig_Error_Runtime('Variable "variants" does not exist.', 6, $this->getSourceContext()); })()));
        foreach ($context['_seq'] as $context["_key"] => $context["variant"]) {
            // line 7
            echo "    ";
            echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->getSourceContext(), $context["variant"], "foo", array()), "html", null, true);
            echo "
";
        }
        $_parent = $context['_parent'];
        unset($context['_seq'], $context['_iterated'], $context['_key'], $context['variant'], $context['_parent'], $context['loop']);
        $context = array_intersect_key($context, $_parent) + $_parent;
    }