我有一个可以包含多维元素的数组。为了在编辑表单中填充数据库中的复选框,我需要检查此数组中的特定键值对。
数组($ areastools)可能如下所示:
array:9 [▼
15 => array:2 [▼
0 => 1
1 => 4
16 => 4
45 => array:2 [▶]
47 => 4
50 => array:2 [▶]
51 => 4
]
第一个键是特定区域ID($ area-> pivot-> id),值是工具ID($ tool-> id)。
目前我有这个检查,如果
,则选中复选框(array_key_exists($area->pivot->id, $areastools) &&
($areastools[$area->pivot->id] == $tool->id))
这适用于不是多维的数组的所有元素。然后在编辑表单中检查正确的复选框。
但是当两个工具添加到同一区域时,将检查这些工具的复选框,因为如果某个区域有很多工具,条件不会检查值是否正确。
我一直在寻找和尝试,但无法找到如何做到这一点。有人可以帮帮我吗?
答案 0 :(得分:0)
我做了一点功能。不是很优雅,但它有效。
function areaTools($areaTools, $areaId, $toolId) {
if(array_key_exists($areaId, $areaTools) {
if(is_array($areaTools[$areaId]) {
foreach($areaTools[$areaId] as $tool) {
if($tool == $toolId;) {
return true;
}
}
} else {
return $areaTools[$areaId] == $toolId;
}
}
}
答案 1 :(得分:0)
如果您只想知道是否找到某个键值对,请使用array_walk_recursive()
CGFloat newY = currentTouchPosition.y - positionOnTouchStartDragging.y + (draggedPageIndex - carousel.scrollOffset) * spacing * carousel.bounds.size.height;
CGFloat delta = self.bounds.size.height * spacing;
CATransform3D result = [carousel transformForItemViewWithOffset:newY / deltaY];