المرشح slice في Twig

من موسوعة حسوب

المرشح slice يستخرج شريحة صغيرة من التسلسل أو الربط (mapping) أو السلسلة النصية:

{% for i in [1, 2, 3, 4, 5]|slice(1, 2) %}
    {# سيكرر على 2 و 3 #}
{% endfor %}

{{ '12345'|slice(1, 2) }}

{# يخرج 23 #}

يمكن استخدام أي تعبير صالح للبداية والطول:

{% for i in [1, 2, 3, 4, 5]|slice(start, length) %}
    {# ... #}
{% endfor %}

يُستخدم ترميز [] من أجل التجميل اللغوي:

{% for i in [1, 2, 3, 4, 5][start:length] %}
    {# ... #}
{% endfor %}

{{ '12345'[1:2] }} {# will display "23" #}

{# يمكن إهمال الوسيط الأول كأننا كتبنا صفرًا #}
{{ '12345'[:2] }} {# will display "12" #}

{# إذا أهملنا الوسيط الأخير فسيختار كل العناصر الباقية #}
{{ '12345'[2:] }} {# will display "345" #}

أسلوب عمل المرشح slice يشبه دالة array_slice للمصفوفات في لغة PHP، و mb_substr للسلاسل النصية التي تستخدم substr كاحتياطي.

يبدأ التسلسل من بداية المتغير إن كانت البداية غير سالبة، فإن كانت سالبة فإنه يبدأ من نفس المسافة من نهاية المتغير. إذا أُعطي الطول وكان موجبًا فإن التسلسل سيحتوي على عناصر عددها يساوي الطول، وإن كان المتغير أقصر من الطول فستكون العناصر المتغيرة فقط هي المتاحة، وإذا أُعطي الطول وكان سالبًا فإن التسلسل يوقف من العناصر عددًا مساويًا لذلك الطول من نهاية المتغير، أما إذا أُهمل الطول فإن التسلسل سيحتوي على كل شيء من البداية حتى نهاية المتغير.

لاحظ أنه يعمل مع الكائنات التي تستخدم واجهة Traversable.

الوسائط

  • start: بداية الجزء.
  • length: حجم الشريحة.
  • preserve_keys: تحديد هل يجب حفظ المفتاح أم لا إذا كان الدخل مصفوفة.

انظر أيضًا

المصادر