【发布时间】:2018-11-05 15:07:55
【问题描述】:
问题。
我喜欢简单而优雅的代码,这感觉不像。第一个解决方案很糟糕。功能性和可能合理的性能,但恶心。第二个更优雅,但对于应该如此简单的事情来说似乎有点过头了。
设置。
$recurring 是一个包含大约 20 个项目的数组。我必须将这 7 个值(星期几)映射到一个字段。使用new_days = implode(',', $days); 完成这两项或以数组形式使用它们,具体取决于调用此函数的位置。
试试 1
$days = array();
if ($recurring['m'])
{
$days[] = 1;
}
if ($recurring['t'])
{
$days[] = 2;
}
if ($recurring['w'])
{
$days[] = 3;
}
if ($recurring['h'])
{
$days[] = 4;
}
if ($recurring['f'])
{
$days[] = 5;
}
if ($recurring['s'])
{
$days[] = 6;
}
if ($recurring['u'])
{
$days[] = 7;
}
试试 2
$map = array(
'm' => 1,
't' => 2,
'w' => 3,
'h' => 4,
'f' => 5,
's' => 6,
'u' => 7,
);
$days = array();
foreach ($map as $offset => $value)
{
if ($recurring[$offset])
{
$days[] = $value;
}
}
有更好的想法吗?
编辑:附加信息
数组看起来像这样:
$recurring = array(
'id' => 27,
'end_date' => '12-27-2005',
'frequency' => 'W',
'm' => 1,
't' => 0,
'w' => 1,
'h' => 0
'f' => 1,
's' => 0,
'u' => 0,
);
带有其他可选参数。
【问题讨论】:
-
这应该进行代码审查。 codereview.stackexchange.com
-
@chris85 似乎有点傻。这是 stackoverflow 有标签的代码优化。
-
我会尝试 2,使用
map。 -
删除了我的答案,祝你好运。
标签: php optimization