【发布时间】:2022-06-24 12:35:05
【问题描述】:
有人可以帮我简化这个复杂的嵌套if() 的算法吗?我知道它可以简化,但如果我相信自己,我怕我会搞砸多个条件。
$groups = array();
foreach ($items as $item) {
if ($item['group_code']) {
if (array_key_exists($item['group_code'], $groups)) {
if (mb_strlen($groups[$item['group_code']]) < mb_strlen($item['title'])) {
$groups[$item['group_code']] = $item['title'];
}
} else {
$groups[$item['group_code']] = $item['title'];
}
} else {
$groups[$item['item_code']] = $item['title'];
}
}
我想要的是在$groups 中创建产品标题索引。如果每个项目都存在group_code 键,那么我想存储属于该组的所有项目的较长标题。如果group_code 不存在(意味着它是单个产品而不是分组产品),我想使用item_code 存储该项目的标题(这是最简单的条件,这里不需要长度比较)。
【问题讨论】:
-
看起来最里面的
else缺少if -
@IłyaBursov 不,它没有!
if (mb_strlen($groups[$item['group_code']]) >= mb_strlen($item['title']))那么什么都不会发生! -
@FayeD。 “如果答案解决了您的问题,请考虑接受答案。这是How does accepting an answer work?。然后返回此处并使用勾选/复选标记执行相同操作,直到它变为绿色。这会通知社区,找到了解决方案。否则,其他人可能认为问题仍然悬而未决,可能想发布(更多)答案。您将获得积分,并鼓励其他人帮助您。
标签: php conditional-statements nested-if