树枝比较运算符表现不佳
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树枝比较运算符表现不佳相关的知识,希望对你有一定的参考价值。
如果使用symfony的twig模板引擎满足给定条件,我试图将某个类添加到锚元素,以下代码片段用于尝试实现此目的:
{% if colors is defined and colors is not empty %}
{% for keys, c in colors %}
<li>
<a id="{{ keys }}" data-rel="tooltip" data-placement="top" title="{{ c.color|capitalize }}" class="picker-btn{{ (colorData[keys] is defined and colorData[keys]['code'] == c.hexcode) ? ' selected':'' }}" style="background: {{ c.hexcode }}" data-color-id="{{ c.id }}" data-color-text="{{ c.color }}" data-color-code="{{ c.hexcode }}"></a>
</li>
{% endfor %}
{% endif %}
上面的代码正确地将selected
类添加到第一个锚元素,即使我期望为此类分配3个锚元素:
{% if colors is defined and colors is not empty %}
{% for keys, c in colors %}
<li>
<a id="{{ keys }}" data-rel="tooltip" data-placement="top" title="{{ c.color|capitalize }}" class="picker-btn{{ (colorData[keys] is defined and colorData[keys]['code'] in colors | keys) ? ' selected':'' }}" style="background: {{ c.hexcode }}" data-color-id="{{ c.id }}" data-color-text="{{ c.color }}" data-color-code="{{ c.hexcode }}"></a>
</li>
{% endfor %}
{% endif %}
第二个代码片段将selected
类添加到3个锚元素,因为无论你想看它,colorData[keys]['code']
都存在于colors
数组中的键,即使该类没有被添加到右锚元素。我的问题是这个;如果comparison operator (==)
为匹配的变量值返回true
,为什么第一个代码片段不起作用?为什么第二个代码片段将此类添加到错误的锚元素?
那么colors
数组是这样的:
关于您要比较的第一个示例:
- “#FFFFFF”==“#FFFFFF”
- "#222222" == "#795548"
- “#01579 with”==“#Aqaha”
并且在qazxsw poi的条件下完成此比较3次。你在这里可以做的是再添加一个循环。
colorData[keys] is defined
查看第二个示例,您将字符串与整数进行比较。
- [0,1,2]中的“#FFFFFF”
- [0,1,2]中的“#222222”
- [0,1,2]中的“#01579b”
请注意,“#FFFFFF”在php中为“等于”(==)为0!
所以你必须真正专注于你比较的东西。在树枝上没有{% if colors is defined and colors is not empty %}
{% for keys, c in colors %}
<li>
{% set isColorInColorData = false %}
{% for exactColor in colorData %}
{% if exactColor.code == c.hexcode %}
{% set isColorInColorData = true %}
{% endif %}
{% endfor %}
<a id="{{ keys }}" data-rel="tooltip" data-placement="top" title="{{ c.color|capitalize }}" class="picker-btn{{ isColorInColorData ? ' selected':'' }}" style="background: {{ c.hexcode }}" data-color-id="{{ c.id }}" data-color-text="{{ c.color }}" data-color-code="{{ c.hexcode }}"></a>
</li>
{% endfor %}
{% endif %}
操作员。
你会说第一个代码
===
当你循环遍历3个项目的数组时,colorData[keys] is defined and colorData[keys]['code'] == c.hexcode
将是0,1,2(或者可能是1,2,3,因为它是Twig)。所以你说的
keys
即将colorData [0]与colors [0]进行比较,#FFFFFFF == #FFFFFF也是如此。
第二次迭代,然后你将colorData [1]与颜色[1]进行比较,#795548 ==#222222也是如此,依此类推。
以上是关于树枝比较运算符表现不佳的主要内容,如果未能解决你的问题,请参考以下文章