使用SQL结果填充外部foreach循环数组

时间:2011-12-16 17:10:37

标签: php sql arrays foreach while-loop

我是一个php newbee,我正在尝试用一系列foreach和SQL结果填充3个不同的数组。代码实际上有效,但我只保留打印最后的结果。不知何故,我不是在增加数组,而是一遍又一遍地写它。问题是,如何增加它们?任何帮助都非常感谢!

        $online = array();//armazena online
    $ocupado = array();//armazena ocupado
    $offline = array();//armazena offline

$atendentes = mysql_query("SELECT nome FROM atendentes ORDER BY nome")or die(mysql_error());
while ($row = mysql_fetch_assoc($atendentes)) {/// Pegar atendentes
    $atendentedb = array($row["nome"]);
}

foreach ($atendentedb as $atendente) {// LOOP SELECAO DAS ATENDENTES; VERIFICAR CADA UMA

    $names  = modWhosonlineCustom::getOnlineUserNames();//pega o nome de quem esta online agora

    foreach ($names as $name){//DA UM LOOP, EM QUEM ESTA ONLINE E MARCA 

    //*****************************'ACENDER' se a atendente esta online
    $att = $name->username;
    $att = strtolower($att);

    if ($atendente == $att){//esta atendente esta online
        $att_online = 'yes';
        }//esta atendente esta online
    if ($atendente != $att){//esta nao atendente esta online
        $att_online = 'no';
        }//esta atendente nao esta online
    //******************************************************************

    }//loop foreach quem esta online

    if ($att_online == 'yes'){//se atendente online
    $status = mysql_query("SELECT status FROM atendentes WHERE nome = '$atendente'")or die(mysql_error());
    while ($row = mysql_fetch_assoc($status)) {
    $statusdb = $row["status"];
    }
        //**************************** VERIFICA O STATUS
        if ($statusdb == 'disponivel'){
        //*******************************
        $descricao = mysql_query("SELECT hp_online FROM atendentes WHERE nome = '$atendente'")or die(mysql_error());
        while ($row = mysql_fetch_assoc($descricao)) {
        $online[] = $row['hp_online'];
            }
        }// se o status é disponivel

                //*********************************  OCUPADOS           
                if ($statusdb == 'ocupado'){
                $descricao = mysql_query("SELECT hp_busy FROM atendentes WHERE nome = '$atendente'")or die(mysql_error());
                while ($row = mysql_fetch_assoc($descricao)) {
                $ocupado[] = $row['hp_busy'];
                }
                    }// se o status é ocupado
    }//atendente = yes  

    if ($att_online != 'yes'){//se estiver offline
        $descricao = mysql_query("SELECT hp_offline, horario FROM atendentes WHERE nome = '$atendente'")or die(mysql_error());
        while ($row = mysql_fetch_assoc($descricao)) {
        $offline[] = $row['hp_offline'];
        $offline[] = $row['horario'];
                }
        }//se att nao é online

}// loop foreach

1 个答案:

答案 0 :(得分:1)

在while循环中获取时,使用[]语法将值附加到数组。否则,您只是在每次循环迭代时覆盖相同的值。

$atendentedb = array();
while ($row = mysql_fetch_assoc($atendentes)) {/// Pegar atendentes
    $atendentedb[] = array($row["nome"]);
    //--------^^^^
}

// Later
$statusdb = array();
while ($row = mysql_fetch_assoc($status)) {
  $statusdb[] = $row["status"];
  //-------^^
}

如果我在你的代码中遗漏了其他人,你也应该改变它们。