<?php
# 传入参数 客服ID 以及当前对应的问题难度 需要 和调用方约定好
function filterSidsBySkill($sids = [], $skill = "D") {
#### 这部分的数据需要动态获取 start ###
// 原始数据
$data = [
["sid" => 1, "skill" => "A"],
["sid" => 2, "skill" => "B"],
["sid" => 3, "skill" => "C"],
["sid" => 4, "skill" => "C"]
];
// 按照顺序取出的技能列表
$skillsToFetch = ["A", "B", "C", "D"];
#### 这部分的数据需要动态获取 end ###
// 处理客服数据
$service_skills = array_column($data, "skill", "sid");
// 创建一个技能到客服ID的映射
$skillToSid = [];
foreach ($service_skills as $sid_key => $skill_item) {
if (!in_array($sid_key, $sids)) continue;
$skillToSid[$skill_item][] = $sid_key;
}
// 初始值 index
$index = $old_index = array_search($skill, $skillsToFetch);
$result = $skillToSid[$skill] ?? [];
while (true) {
if (!empty($result) || $index === false) break;
# 如果循环到最后一个技能,则从头开始
$index += 1;
$index >= count($skillsToFetch) && $index = 0;
if ($index == $old_index) break;
$next_skill = $skillsToFetch[$index] ?? "";
$result = $skillToSid[$next_skill] ?? [];
}
return $result;
}
$result = filterSidsBySkill([1, 2, 3, 4], "C");
var_dump($result);
// 输出结果
array(2) {
[0]=>
int(3)
[1]=>
int(4)
}
die;
环状模型-根据传入源数据和级别 筛选出与传入级别匹配的数据
最新推荐文章于 2024-08-09 17:50:34 发布