2016-11-20 60 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

你是否試圖從一個行拉到'r []'數組從TBL_USERS(由函數cavatar返回)?如果是這樣,你每次都在while循環中覆蓋數組。你可以嘗試'array_push($ r,cavatar($ data [「SID」]))''。 – blackpen

回答

0

while循環不接受括號,只是變量,表達式和函數中的任何其他聲明。公寓從它,它看起來像你想存儲的用戶的用戶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'; 
    } 
} 
相關問題