2016-11-20 2 views
1

whileループで関数を呼び出すと、なぜ私のループが壊れますか?なぜwhileループで別の関数を使用すると、それは壊れていますか?

デフォルトでは、3つの結果が必要ですが、この場合、1つの結果しか返さないため、真の方法でそれを行うことができますか?

function pchat() 
{ 
    $result = $dp->sql_query("SELECT * FROM ".TBL_PCHAT." WHERE 1 ORDER BY id ASC LIMIT 5"); 

    $r = array(); 
    while (while($data = $dp->sql_fetchrow()) 
    { 
     $r[] = cavatar($data["sID"]); // calling other function make 1 return result ?! 

     AND 

     $r[] = $data["sID"]; // with this one return all 3 rsults. 
    } 

    return $r; 
} 



function cavatar($id) 
{ 
    $result = $dp->sql_query("SELECT avatar FROM ".TBL_USERS." WHERE id = $id"); 
    $data = $dp->sql_fetchrow(); 

    if($data){ 
     return $data['avatar']; 
    }else{ 
     return 'noavatar.png'; 
    } 
} 
+0

一度に1つの行を 'r []'配列から引き抜こうとしていますか? TBL_USERS(関数cavatarによって返される)?その場合は、毎回whileループで配列を上書きします。あなたは 'array_push($ r、cavatar($ data [" SID "]))'を試すことができます。 – blackpen

答えて

0

whileループは括弧だけの変数、式と関数内の他のステートメントを受け入れません。それからAppartで、あなたのユーザIDとユーザのアバターを次のような配列に格納したいようです:

function pchat() 
{ 
    $result = $dp->sql_query("SELECT * FROM ".TBL_PCHAT." WHERE 1 ORDER BY id ASC LIMIT 5"); 
    $r = array(); 
    while($data = $dp->sql_fetchrow()) { 
     $r[] = array(
      'avatar' => cavatar($data["sID"]), 
      'id' => $data["sID"] 
     ); 
    } 

    return $r; 
} 

function cavatar($id) 
{ 
    $result = $dp->sql_query("SELECT avatar FROM ".TBL_USERS." WHERE id = $id"); 
    $data = $dp->sql_fetchrow(); 

    if($data) { 
     return $data['avatar']; 
    } else { 
     return 'noavatar.png'; 
    } 
} 
関連する問題