php - 如何在PHP中的现有数组中推送基于条件的值
问题描述
我有三个数组
- 主题已选
- 相关组
- 主题已分配
$topicsSelected = [ "T-100","T-600"];
$relavantGroups = [
[ "id" => "G-001","name" => "3 A","active" => false ],
["id" => "G-002","name" => "3 B","active" => false]
];
$topicAssingned = [
"G-001" => [
"groupID" => "G-001",
"groupName" => "3 A",
"topics" => [
"T-100" => [
"topicID" => "T-100"
],
"T-200" => [
"topicID" => "T-200"
]
]
],
"G-002" => [
"groupID" => "G-002",
"groupName" => "3 B",
"topics" => [
"T-400" => [
"topicID" => "T-400"
],
"T-500" => [
"topicID" => "T-500"
]
]
],
];
$topicsSelected
数组值至少应该存在一个值$topicAssingned
意味着基于 groupID,我必须将一个值推送到$relavantGroups
喜欢 禁用:D 假设值不存在意味着禁用:A
预期输出:
[
"id" => "G-001",
"name" => "3 A",
"active" => false,
"disable" => "D"
],
[
"id" => "G-002",
"name" => "3 B",
"active" => false,
"disable" => "A"
]
解决方案
你问的不是很清楚,代码有点奇怪,但我会试一试。首先修复你的数组声明——你应该使用=>
而不是:
;
您必须$relavantGroups
遍历和为每个元素迭代$topicAssingned
数组。然后执行一个简单的比较,看看组Id
是否存在,你就完成了!
这是我的解决方案(又快又脏): 你可以在这里看到
foreach ($relavantGroups as &$g) {
$found = false;
foreach ($topicAssingned as $key => $assigned) {
if ($key === $g["id"] && is_array($assigned["topics"])) {
foreach ($assigned["topics"] as $topic) {
if (in_array($topic["topicID"], $topicsSelected)) {
$found = true;
break;
}
}
}
}
$g["disable"] = $found ? "D" : "A";
}
var_dump($relavantGroups);
更新了解决方案 - 请注意,我正在使用in_array()
它来确定是否topicID
存在。这意味着$topicsSelected
数组中的任何值都会影响结果。
希望我有所帮助。
这将输出(基于您的示例):
array(2) {
[0]=> array(4) {
["id"]=> string(5) "G-001"
["name"]=> string(3) "3 A"
["active"]=> bool(false)
["disable"]=> string(1) "D"
}
[1]=> array(4) {
["id"]=> string(5) "G-002"
["name"]=> string(3) "3 B"
["active"]=> bool(false)
["disable"]=> string(1) "A"
}
}
推荐阅读
- ssis - 不一致的 SSIS 错误“打开“%1”的行集失败。使用 COZYROC 数据流任务时+
- prolog - 在 Prolog 中尝试实现?
- pandas - 根据列值选择数据框的行
- python - 如何对绘图的 X ayis 中的数据点进行排序
- angular - 发布 dotnet core 应用时抛出错误
- angular - Angular:如何在有多个下拉列表的 ng-bootstrap 下拉列表中检测切换状态
- nativescript - 聚焦时更改 TextField 的边框颜色
- android - 错误:找不到符号类 GlideBitmapDrawable
- python - 可以一次扩展两个列表吗?
- javascript - 服务器无法识别 REST 服务中来自客户端的获取请求