2009-09-16 55 views
1

我有這樣的代碼更簡單的方法呢?

public function getList() 
{ 
    $array = array(); 

    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
    while($ro = mysql_fetch_object($r)) 
    { 
     array_push($array , $ro); 
    } 

    if (count($array) > 0) 
     return $array; 
    else 
     return false; 
} 

,並想知道是否有這樣做的更簡單的方法?

該代碼首先將所有數據從數據庫中取出,將其推入數組中,檢查其數量並返回數組或返回false。

當我把它放到我的$數組中時,我需要對這個對象進行foreach來處理它。

回答

3

您應該返回一個空數組,而不是假的,那麼你可以不PHP產生錯誤的foreach通過運行它。您可以進一步使用$array[] =代替array_push()

public function getList() 
{ 
    $array = array(); 

    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 

    while($ro = mysql_fetch_object($r)) 
    { 
      $array[] = $ro; 
    } 
    return $array; 
} 
2

我可能會做你喜歡的建議。

有一件事我會改變:不是這樣的:

array_push($array , $ro); 

我會probaly使用:

$array[] = $ro; 

爲了避免函數調用,這似乎無用在這種情況下(包括語法應該做的一樣)。另外,我總是會返回一個數組:這個函數被稱爲「getList」,所以,在我看來,它應該返回一個列表。

即使沒有元素,它應該返回一個空列表(即,空array),而不是布爾false

這也意味着你可以返回你的$數組,而不必計算它包含的元素的數量;所以,我想我最終會是這樣的:

public function getList() 
{ 
    $array = array(); 
    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
    while($ro = mysql_fetch_object($r)) 
    { 
    $array[] = $ro; 
    } 
    return $array; 
} 
-1
$r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
return mysql_num_rows($r) > 0 ? return mysql_fetch_array($r) : false; 
+0

NOOOO。這是**可怕的**。 – Fragsworth 2009-09-16 11:09:10

+0

也許我錯了,但是,用這個函數只會返回1行作爲數組,而不是作爲對象的所有行的數組;還有,在?中返回兩次:看起來很奇怪(它實際上顯然會給你一個分析錯誤:語法錯誤,意外的T_RETURN) – 2009-09-16 11:09:29