查找数组中某些元素具有多个维度的值



我有一个可以包含多维元素的数组。为了在编辑表单中从数据库填充复选框,我需要检查来自该数组的特定键值对。

数组($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))

此操作适用于数组中所有非多维元素。然后在编辑表单中选中正确的复选框。

但是当两个工具被添加到同一区域时,这些工具的复选框都不被选中,因为如果一个区域有许多工具,条件不会检查值是否正确。

我一直在寻找和尝试,但无法找到如何做到这一点。有人能帮帮我吗?

我将创建一个小函数。不是很优雅,但它可以工作。

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;
        }
    }
}

如果您只想知道是否找到了某个键值对,则使用array_walk_recursive()

$found=0;
function find_key_value($v, $k)
{
    global $area,$tool,$found;
    if (($k==$area->pivot->id)&&($v==$tool->id))
         $found=1;
}
array_walk_recursive($areastools, 'find_key_value');

相关内容

  • 没有找到相关文章

最新更新