生成特定于 while 循环的每一行的数组


Generate array specific for each row of a while loop

所以我有一个 while 循环,

它为用户生成所有收件箱消息,然后在那个 while 循环中,我有一个查询和另一个 while 循环,生成该消息的所有收件人。我正在尝试从 while 循环内部构建一个数组,该数组将回显每个消息线程的所有收件人/参与者。照原样,当我var_dump我的用户名数组时,它被构建为包含所有消息的所有收件人(到最后一次回显时(。那么,我将如何使这个数组对每一行都是唯一的呢?我确信这是一个常见问题,但我似乎找不到搜索词来了解它。

 if (count($numbermessages)) {
        while ($stmt->fetch()) {
            $getrecipusernames= $mysqli->prepare("SELECT distinct(message_recips.userid), users.username, users.id FROM message_recips INNER JOIN users ON users.id=message_recips.userid WHERE messageid=?");
            $getrecipusernames->bind_param('i', $messageid);
            $getrecipusernames->execute();
            $getrecipusernames->store_result();
            $getrecipusernames->bind_result($recipuserid, $recipusername, $recipuserid1);
            $getrecipusernames->fetch();
                 while ($getrecipusernames->fetch()) {
                      $usernamesarray[] = $recipusername;
                  }
            $date_time=$created_on;
            $dte_new=date("l H:i A", strtotime($date_time));
               if ($status=="A"){
            $message_read_status="read";
               }
            else {
            $message_read_status="unread";
            }

衷心感谢任何帮助!

解决方案是在填充数组之前声明数组,在while循环之外:

 $usernamesarray = array();
 while($getrecipusernames->fetch()){
     $usernamesarray[] = $recipusername;
 }
if (count($numbermessages)) {
    while ($stmt->fetch()) {
        $getrecipusernames= $mysqli->prepare("SELECT distinct(message_recips.userid), users.username, users.id FROM message_recips INNER JOIN users ON users.id=message_recips.userid WHERE messageid=?");
        $getrecipusernames->bind_param($messageid);//use one bind
        $getrecipusernames->execute();
        $getrecipusernames->store_result();
        $getrecipusernames->bind_result($recipuserid, $recipusername, $recipuserid1);
             while ($getrecipusernames->fetch()) {
                  $usernamesarray[] = $recipusername;
              }
        $date_time=$created_on;
        $dte_new=date("l H:i A", strtotime($date_time));
           if ($status=="A"){
        $message_read_status="read";
           }
        else {
        $message_read_status="unread";
        }