php array_unique与array_filter结合使用,输出不正确

时间:2013-09-03 14:04:03

标签: php arrays

在数据库表中有多个与客户相关的条目。每个条目都有time_1,time_2,time_3,time_4,time_5和time_6字段。我循环使用条目并使用它来组合这些时间来创建一天的循环周期:

while($row=mysql_fetch_assoc($script_check))
        {
            $prerounds = array_filter($row);
            $rounds = array_unique(array_merge($prerounds));    
        }

然而,如果一个条目设置了1-4次并且第二个条目设置了1-3次,则第四次将被完全删除,因此只有1-3次被放入数组中。当一些空白时,如何组合这些字段而不丢失数据?到目前为止,这个策略是剥离所有空白的$ row然后将它们合并在一起以创建与该客户当天相关的一组轮次。感谢。

1 个答案:

答案 0 :(得分:1)

OP要求:

基本上,你的主要问题是你在每次迭代时重新初始化$rounds,你没有将任何现有数组与新数组合并。

$rounds = array();
while($row = $pdo->fetch(PDO::FETCH_ASSOC))
{
    $rounds = array_merge($rounds, array_unique(array_filter($row)));
}

Hmz ...除了mysql_*被弃用之外(这就是我在我的代码片段中使用PDO的原因),你应该真正检查你的逻辑...也许一个体面的查询可能更合适,或者一套简单的if的。它的速度甚至可能更快