2012-05-23 180 views
3

你好,我是努力使功能与while循环在PHP但这里着越来越写是我的代码与while循环

function mail_detail($mail_detail){ 

    $data= mysql_query("select * from messages where messages.to = '$mail_detail' and to_viewed = 0 ORDER BY messages.id DESC"); 
    while ($result= mysql_fetch_array($data)){ 
    return $result; 
    } 

} 

进出放功能PHP是

$mail_detail= mail_detail($userid) 
echo '<li class="read"> 

       <a href="#"> 
       <span class="message">'. $mail_detail['title'].'</span> 
        <span class="time"> 
         January 21, 2012 
        </span> 
           </a> 
     </li>'; 

我没有得到所有值只是获得一个值请帮助 thx

回答

8

return语句正在终止您的循环并退出函数。

要获取所有值,请将它们添加到循环中的数组中,然后返回数组。就像这样:

$results = array(); 

while ($result = mysql_fetch_array($data)) { 
    $results[] = $result; 
} 

return $results; 

在接收到阵列

$msgArray = mail_detail($mail_detail); 

foreach($msgArray as $msg) { 
    //use $msg 
} 

要添加的侧面,一个功能只能够返回一次(除了一些特殊情况,你不应该担心)。因此,当函数第一次遇到return语句时,它返回值并退出。

return这个功能通常可以用于您的优势。例如:

function doSomething($code = NULL) 
{ 
    if ($code === NULL) { 
     return false; 
    } 

    //any code below this comment will only be reached if $code is not null 
    // if it is null, the above returns statement will prevent control from reaching 
    // this point 

    writeToDb($code); 
} 
+0

我试图从该表(消息)中获取所有值,如果返回正在终止我应该用什么来代替返回,所以此函数使用while循环。 – Harinder

+0

看到我的编辑答案 – xbonez

+0

感谢您的帮助,但它不是出于某种原因...功能mail_detail($ mail_detail)工作{ \t \t $数据=请求mysql_query(“从邮件中选择*其中messages.to = '$ mail_detail' 和to_viewed = 0 ORDER BY messages.id DESC“); \t $ results = array(); \t while($ result = mysql_fetch_array($ data)){ \t $ results [] = $ result; } return $ results; ( – Harinder

0
function mail_detail($mail_detail){ 
    $returnArr = array(); 
    $data= mysql_query("select * from messages where messages.to = '$mail_detail' and to_viewed = 0 ORDER BY messages.id DESC"); 
    while ($result= mysql_fetch_array($data)){ 
     $returnArr[] = $result; 
    } 
    return $returnArr; 

} 

这样,你回到一切恢复,因为你在一个阵列和你的循环结束推,全阵列式西港岛线返回。因为就像xbones说的那样,回报打破了你的循环!

0

harinder,Function(mysql_fetch_array($data))返回一个数组。这意味着您的$result是一个数组,所以当你在查看页面recevie的$result你必须使用foreach看看 这样提取它:

foreach($result as $item) 
{ 
    echo $item->user(<-here you have to write the column name ,that you want to retrieve) 
} 

因此你可以得到你所有的结果阵列。